- ベストアンサー
マクロによる自動化について
マクロを構築して マクロを実行すると指定されたディレクトリにある basファイルを取り込み実行するようにしたいのですが、 どのようにすればよいでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です。 ANo.5さんご指摘の方法で可能でした。勉強になりました、ありがとうございます。 Sub test() With ThisWorkbook.VBProject .VBComponents.Import Filename:=ThisWorkbook.Path & "\" & "Module2.bas" Application.Run (ThisWorkbook.Name & "!test2") .VBComponents.Remove .VBComponents.Item("Module2") End With End Sub '<Module2.bas の内容> 'Attribute...はExcelが勝手に付けたもの 'Attribute VB_Name = "Module2" 'Option Explicit ' 'Sub test2() ' MsgBox "Hello World" 'End Sub '
その他の回答 (5)
- cafe_au_lait
- ベストアンサー率51% (143/276)
No.2さんのコードですが、Callの代わりにRunを用いれば可能だと思います。
- mitarashi
- ベストアンサー率59% (574/965)
#2です。 >毎回のデータ処理の効率を上げるために >できるかぎり自動化できるようなマクロを構築しよと考えています。 データ処理の効率アップと、マクロ導入の自動化の関係が分かりかねますが、マクロ導入の自動化については、参考URLの様な事はいかがでしょうか。外していたらすみません。
- reiho-fuji
- ベストアンサー率30% (149/481)
ハイパーリンクではダメでしょうか? マクロの一部で組むというならハイパーリンクをクリックする操作を含めればとりあえず動きます。
- mitarashi
- ベストアンサー率59% (574/965)
何のために、その様な事をなさりたいのでしょうか。目的が分かれば、識者から対策案が出てくると思います。 ご質問の内容を文字通り行うと、 Sub test() With ThisWorkbook.VBProject '(fname).VBProject .VBComponents.Import Filename:=ThisWorkbook.Path & "\" & "Module2.bas" End With Call インポートしたモジュール中のマクロ End Sub ですが、当然インポート前はマクロが存在しないので、コンパイルエラーになってしまいます。 ダミーのModule2を置いておいて、同名の空のマクロを入れておき、Module2の削除~インポート~マクロの実行を試みましたが、メモリー中にはModule2が残っている様で(インポートされたコードがModule21になることからも分かりますが)そうは問屋が卸しませんでした。
- DIooggooID
- ベストアンサー率27% (1730/6405)
まずは、マクロ ==> 新しいマクロの記録 機能を実行します。 この状態で、ご要望の処理を行えば、ご要望処理を自動化するマクロを作成することができます。
補足
シート上での処理ではないのでマクロの記録では なにも記録されませんが
補足
毎回のデータ処理の効率を上げるために できるかぎり自動化できるようなマクロを構築しよと考えています。 マクロブックなんかも利用できるでしょうか?