2013-11-15 3 views
1

Я хочу автоматизировать некоторые шаги с помощью VBA, а также хочу иметь возможность выполнять все из командной строки. В моем примере я использую Corel Draw, но я думаю, что мой вопрос не зависит от Corel Draw - это скорее вопрос об пространствах имен.VBScript и VBA - проблемы с пространством имен

Так что я написал небольшой скрипт (названный 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 не является определены. Конечно, я не включил в VBScript какие-либо материалы Corel Draw. Но как мне включить материал VBA, специфичный для одного приложения? (Это также может позволить мне написать dim drawApp as CorelDRAW.Application или что-то в этом роде).

Я очень новичок в VBA и VBScripts, и мне не удалось найти хорошие учебные пособия или справочные ресурсы (сайт Microsoft не очень помогает). Любые указатели приветствуются.

EDIT:

Я скопировал ExportBitmap -части из кода, который был сгенерирован, когда я recored макроса в Corel Draw. Изучение кода из восстановленных макросов кажется хорошим способом познакомиться с возможностями программного обеспечения VBA. Есть ли способ лучше?

+0

в вашем скрипте Я не вижу, что вы определяете cdrPNG. Это перечисление из Coral Draw? – Sorceri

+0

Да, это так. Я скопировал код, который был сгенерирован, когда я восстановил макрос в Corel DRAW ... – Sh4pe

+1

Я боюсь, что у вас нет выбора, кроме определения их самим Const cdrPNG = «My Constant Value» или Const cdrPNG = MyNumericValue в начале вашего VBScript , – jacouh

ответ

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> 
Смежные вопросы