人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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"

●質問者: consultation10
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント ベストアンサー

こんな感じになるんじゃないでしょうか(試してないけど)。

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

あと、デジタル署名をつけるか、セキュリティレベルを下げる必要があると思います。
セキュリティレベルを下げるのは「開発」リボン→「マクロのセキュリティ」で、「すべてのマクロを有効にする」を選択して保存。


consultation10さんのコメント
ご回答ありがとうございます。 上記コードを試したところ、 『COM_Error:名前が不明です。 6行目:EXCEL.Run "BB"』 と表示されて、マクロの実行ができませんでした。 AA.xlsbに標準モジュール→Module1にBBを作りました。 私の設定が不適切かもしれませんが、もし解決方法がありましたら宜しくお願い致します

a-kuma3さんのコメント
>> 『COM_Error:名前が不明です。 6行目:EXCEL.Run "BB"』 << カッコが要るかなあ... >|vb| EXCEL.Run("BB") ||< 「6行目」って出るってことは、UWSC 側はお試しコードですよね。 呼ばれる側の Excel ブックは、実際に使おうと思っているものですか? それとも、お試し用のサンプル的なやつですか?

consultation10さんのコメント
ご回答ありがとうございます。 UWSCのコードとExcelブックはお試し用です。 EXCEL.Run("BB")でマクロを実行することができました!ありがとございました。 ちなみに、(PERSONAL.XLSB)に入っているサブルーチンBBを実行する方法がありますでしょうか? <pre> <code> path="C:\Users\abc\Desktop\AA.xlsx" EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.Visible = True EXCEL.Workbooks.Open(FileName:=path) sleep(2) EXCEL.Run ("BB") </code> </pre> やりたいことはデーターベースからデスクトップに出力されたAA.xlsxを編集するため、UWSCから(PERSONAL.XLSB)に入っているサブルーチンBBを実行することです。 質問時の説明が足りなくて大変申し訳ございませんが、もし可能であればよろしくお願い致します。

a-kuma3さんのコメント
ここから先は、UWSC は関係ない話です。 その PERSONAL.xlsb のサブルーチン BB は、デスクトップにある AA.xlsx をどうやって扱いますか? 大きく分けて、ふたつのパターンがあると思います。 ひとつは、PERSONAL.xlsb のマクロが AA.xlsx を分かっている、もしくは見つけられるケース。 PERSONAL.xlsb で Workbooks.Open を使って、AA.xlsx を開いて、手に入った Workbook オブジェクトを操作します。 >|vb| Sub XX() ' PERSONAL.xlsb の VBA Set target_book = Workbooks.Open("C:\Users\abc\Desktop\AA.xlsx") Set sheet = target_book.Sheets(1) ' AA.xlsx の一番目のシート Set cell = sheet.cells(1,1) ' AA.xlsx の一番目のシートの A1 セル ... ||< UWSC からは、PERSONAL.xlsb のサブルーチンを呼び出します。 もうひとつは、AA.xls<span style="color:red;">b</span> から PERSONAL.xlsb のサブルーチンを呼び出すケース。 UWSC のコードと同じで、Application.Run メソッドを使います。 >|vb| Sub BB() ' AA.xlsb の VBA Set personal_book = Workbooks.Open("D:\foo\PERSONAL.xlsb") Application.Run "PERSONAL.xlsb!XX" ... ||< データが吐き出された方のブックでマクロが動くようにしてあげる必要があります。 データが吐き出された AA.xlsx の方では、マクロは持たずにデータだけにしておきたい、ということであれば、前者の方を使うことになります。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ