从VBScript调用外部VBA

时间:2011-05-31 19:35:32

标签: vba vbscript ms-word ms-office

我正在使用一个名为mathtype的程序从word文档中提取一些方程式对象。我在VBA中编写的代码完全可以使用他们的API,但我必须将其转换为VBScript文件。我已经浏览了整个谷歌,但没有找到任何解决方案(如果有可能)从VBScript调用VBA库。

VBScript无法看到MathTypeSDK对象/函数。

如果不可能,我将如何封装我需要在全局可用的word文件中运行并从VBScript调用它的宏?

编辑:知道了!不幸的是,下面的方法虽然有用,但对我的情况不起作用。我找到了更接近的东西:将宏嵌入到全局文件中并通过Word Objects Run命令调用它。 objWord.Run“Normal.NewMacros.RunMain”

2 个答案:

答案 0 :(得分:3)

这是一种可能适合您的方法。我测试了这个简单的例子。

文件“Tester.docm”中的“clsTest”类:

Public Sub Hello()
    MsgBox "Hello"
End Sub

类“Instancing”标记为“PublicNotCreatable”。

“Tester.docm”中的模块:

Public Function GetClass() As clsTest
    Set GetClass = New clsTest
End Function

在你的vbscript中:

Dim fPath, fName

fPath = "C:\Documents and Settings\twilliams\Desktop\"
fName = "Tester.docm"

Dim wdApp, o

Set wdApp = CreateObject("word.application")
wdApp.visible=true
wdapp.documents.open fPath & fName

Set o = wdApp.Run("GetClass")
o.Hello

Set o=nothing

再次 - 我只测试了这个简单的例子:你必须根据自己的情况进行调整并尝试一下。

答案 1 :(得分:2)

我认为Word-VBA不是为了创建可重用的库(用于外部程序)。

然而,重用现有Word-VBA代码的一种方法是使用WScript.Shell.Run命令行开关通过/m<macroname>运行Word(有关详细信息,请参阅http://support.microsoft.com/kb/210565/en-us)。这有一个限制,你需要调用一个特定的宏,一个Word进程再次启动,运行该宏,然后结束。意味着,如果您只需要一次调用Word.VBA来执行特定任务,这可能没问题,但是如果您需要在VBScript和VBA宏之间进行大量的进程间通信,那么您应该寻找不同的解决方案。

相关问题