VBScript和VBA - 名称空间问题

时间:2013-11-15 15:53:13

标签: vba vbscript namespaces

我想使用VBA自动执行某些步骤,并且我还希望能够从命令行执行所有操作。在我的例子中,我使用的是Corel Draw,但我认为我的问题与Corel Draw无关 - 它更多的是关于命名空间的问题。

所以我编写了以下小脚本(称为foo.vbs):

dim drawApp
Set drawApp = CreateObject( "CorelDraw.Application.14" )
drawApp.OpenDocument( "C:\foo\bar.cdr" )

Dim exportFilter
set exportFilter = drawApp.ActiveDocument.ExportBitmap("bar.png", cdrPNG, cdrAllPages, cdrRGBColorImage, 10206, 8578, 300, 300, cdrNormalAntiAliasing, False, False, True, False, cdrCompressionNone)

然后,我从命令行运行它:

cscript.exe foo.vbs

我收到cdrPNG未定义的错误。当然 - 我没有将任何Corel Draw特定内容包含在VBScript中。但是,如何包含特定于一个应用程序的VBA内容? (这也可以让我写dim drawApp as CorelDRAW.Application或类似的东西。)

我是VBA和VBScripts的新手,我找不到好的教程或参考资源(微软网站不是很有帮助)。欢迎任何指示。

修改

我从我在Corel Draw中记录宏时生成的代码中复制了ExportBitmap - 部分。研究来自recored宏的代码似乎是了解软件VBA功能的好方法。还有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

如果您考虑使用.wsf脚本包而不是.vbs脚本文件,那么一切都会更容易。添加WSF files中支持的类型库。

<package>
    <job id="Main">
        <!-- 
        add type library reference specifying progid and version
        then all enum constants will be ready to use
        -->
        <reference object="CorelDraw.Application" version="14.0" />
        <script language="VBScript">
            Option Explicit

            Dim drawApp
            Set drawApp = CreateObject("CorelDraw.Application.14")
                drawApp.OpenDocument("C:\foo\bar.cdr")

            Dim exportFilter
            Set exportFilter = drawApp.ActiveDocument.ExportBitmap( _ 
            "C:\foo\bar.png", cdrPNG, cdrAllPages, cdrRGBColorImage, 10206, 8578, 300, 300, _ 
            cdrNormalAntiAliasing, False, False, True, False, cdrCompressionNone, Nothing, Nothing)
                exportFilter.Finish
                drawApp.Quit
        </script>
    </job>
</package>