• ベストアンサー

マクロによる自動化について

マクロを構築して マクロを実行すると指定されたディレクトリにある basファイルを取り込み実行するようにしたいのですが、 どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.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)

回答No.5

No.2さんのコードですが、Callの代わりにRunを用いれば可能だと思います。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

#2です。 >毎回のデータ処理の効率を上げるために >できるかぎり自動化できるようなマクロを構築しよと考えています。 データ処理の効率アップと、マクロ導入の自動化の関係が分かりかねますが、マクロ導入の自動化については、参考URLの様な事はいかがでしょうか。外していたらすみません。

参考URL:
http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub06_030.html
回答No.3

ハイパーリンクではダメでしょうか? マクロの一部で組むというならハイパーリンクをクリックする操作を含めればとりあえず動きます。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

何のために、その様な事をなさりたいのでしょうか。目的が分かれば、識者から対策案が出てくると思います。 ご質問の内容を文字通り行うと、 Sub test() With ThisWorkbook.VBProject '(fname).VBProject .VBComponents.Import Filename:=ThisWorkbook.Path & "\" & "Module2.bas" End With Call インポートしたモジュール中のマクロ End Sub ですが、当然インポート前はマクロが存在しないので、コンパイルエラーになってしまいます。 ダミーのModule2を置いておいて、同名の空のマクロを入れておき、Module2の削除~インポート~マクロの実行を試みましたが、メモリー中にはModule2が残っている様で(インポートされたコードがModule21になることからも分かりますが)そうは問屋が卸しませんでした。

water18
質問者

補足

毎回のデータ処理の効率を上げるために できるかぎり自動化できるようなマクロを構築しよと考えています。 マクロブックなんかも利用できるでしょうか?

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

まずは、マクロ ==> 新しいマクロの記録 機能を実行します。 この状態で、ご要望の処理を行えば、ご要望処理を自動化するマクロを作成することができます。

water18
質問者

補足

シート上での処理ではないのでマクロの記録では なにも記録されませんが