我正在使用一个名为mathtype的程序从word文档中提取一些方程式对象。我在VBA中编写的代码完全可以使用他们的API,但我必须将其转换为VBScript文件。我已经浏览了整个谷歌,但没有找到任何解决方案(如果有可能)从VBScript调用VBA库。
VBScript无法看到MathTypeSDK对象/函数。
如果不可能,我将如何封装我需要在全局可用的word文件中运行并从VBScript调用它的宏?
编辑:知道了!不幸的是,下面的方法虽然有用,但对我的情况不起作用。我找到了更接近的东西:将宏嵌入到全局文件中并通过Word Objects Run命令调用它。 objWord.Run“Normal.NewMacros.RunMain”
答案 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宏之间进行大量的进程间通信,那么您应该寻找不同的解决方案。