下記コードで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"
AA.xls に引数なしのサブルーチン BB があることが大前提です。
Sub BB() ... End Sub
あと、デジタル署名をつけるか、セキュリティレベルを下げる必要があると思います。
セキュリティレベルを下げるのは「開発」リボン→「マクロのセキュリティ」で、「すべてのマクロを有効にする」を選択して保存。
ご回答ありがとうございます。
UWSCのコードとExcelブックはお試し用です。
EXCEL.Run("BB")でマクロを実行することができました!ありがとございました。
ちなみに、(PERSONAL.XLSB)に入っているサブルーチンBBを実行する方法がありますでしょうか?
やりたいことはデーターベースからデスクトップに出力されたAA.xlsxを編集するため、UWSCから(PERSONAL.XLSB)に入っているサブルーチンBBを実行することです。
質問時の説明が足りなくて大変申し訳ございませんが、もし可能であればよろしくお願い致します。 2016/06/25 12:48:03
ここから先は、UWSC は関係ない話です。
その PERSONAL.xlsb のサブルーチン BB は、デスクトップにある AA.xlsx をどうやって扱いますか?
大きく分けて、ふたつのパターンがあると思います。
ひとつは、PERSONAL.xlsb のマクロが AA.xlsx を分かっている、もしくは見つけられるケース。
PERSONAL.xlsb で Workbooks.Open を使って、AA.xlsx を開いて、手に入った Workbook オブジェクトを操作します。
UWSC からは、PERSONAL.xlsb のサブルーチンを呼び出します。
もうひとつは、AA.xlsb から PERSONAL.xlsb のサブルーチンを呼び出すケース。
UWSC のコードと同じで、Application.Run メソッドを使います。
データが吐き出された方のブックでマクロが動くようにしてあげる必要があります。
2016/06/25 13:57:19データが吐き出された AA.xlsx の方では、マクロは持たずにデータだけにしておきたい、ということであれば、前者の方を使うことになります。