我想使用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功能的好方法。还有更好的方法吗?
答案 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>