UWSCでVBAを実行する方法を教えてください
下記コードでUWSCからVBAを実行しようとしても、エラーが出ます。
最後の行をExcel.Application.Run "C:\Users\abc\Desktop\AA.xlsx!Module1.BB"としてもダメでした。
よろしくお願い致します。
path="C:\Users\abc\Desktop\AA.xlsx"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
Excel.WorkBooks.Open(FileName:=path)
sleep(2)
Excel.Application.Run "Module1.BB"
こんな感じになるんじゃないでしょうか(試してないけど)。
path="C:\Users\abc\Desktop\AA.xlsb"
EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.Visible = True
EXCEL.Workbooks.Open(FileName:=path)
sleep(2)
EXCEL.Run "BB"
- ワークシートは「バイナリブック」で保存。なので、拡張子も .xlsx → xlsb(マクロ有効ブックでも良いし、97-2003 ブックでも可)
- 一応、変数(オブジェクト)の大文字/小文字を統一
- プロパティも大文字/小文字をきっちりと合わせる
- EXCEL.visible → EXCEL.Visible
- EXCEL.WorkBooks → EXCEL.Workbooks :
- VBA でいう Application は、CREATEOLEOBJ したオブジェクト(なので、.Application は要らない)
- Run メソッドの引数はサブルーチン名だけ
AA.xls に引数なしのサブルーチン BB があることが大前提です。
Sub BB()
...
End Sub
あと、デジタル署名をつけるか、セキュリティレベルを下げる必要があると思います。
セキュリティレベルを下げるのは「開発」リボン→「マクロのセキュリティ」で、「すべてのマクロを有効にする」を選択して保存。