2011-11-04 55 views
2

我有一個需要調用Word 2010 VBA例程並提供字符串參數的VB6應用程序。 VBA例程位於使用打開的文檔啓用的Addin中。無法調用帶參數的Word VBA宏

根據MSDN參考(http://msdn.microsoft.com/en-us/library/ff838935.aspx)我應該能夠在宏名稱後按順序提供該參數。

我的代碼調用程序看起來像這樣:

sMacro = "Link.Functions.UpdateFootnote" 
sParam = "Footnote Text" 
DocApp.Run sMacro, sParam 

'I've also tried 
DocApp.Run MacroName:=sMacro, varg1:=sParam 
'and 
DocApp.Run "Link.Functions.UpdateFootnote","Footnote Text" 

在每種情況下這會產生運行時錯誤438,「對象不支持此屬性或方法」

DocApp.Run "Link.Functions.UpdateFootnote, Footnote text" 

此人給運行時錯誤-2147352573(80020003)「無法運行指定宏」

作爲檢查,我有第二個參數的宏(即然後調用原來的宏)和它工作正常。

DocApp.Run "Link.Functions.UpdateFootnoteTest" 

我在這裏錯了什麼?

+0

這只是一個猜測,但是它與參數中的空格有關嗎? – Vicky

+0

只要我不包含項目名稱(只使用modulename.macroname和一個參數),您的前3種方法適用於我,請將此代碼放在與您試圖調用的宏相同的文檔中嗎? –

+0

維基,我想到了這一點,並嘗試沒有空格。沒有運氣。 – Bashzilla

回答

0

當涉及到使用Application.Run時,單詞是關於ActiveDocument的挑剔。如果函數/過程位於第一個文檔引用的另一個文檔(除主文檔的模板之​​外),則有時需要先激活引用的文檔。

即使激活了文檔,也無法通過項目名稱限定函數名稱。你可以做的最好的是使用模塊名稱

Link.ThisDocument.Activate 
Application.Run "Functions.Foo", "FOO"