- ベストアンサー
エクセルのマクロを記述したファイルを呼び出して実行
エクセルのマクロを記述した外部ファイルを作成しておいて メイン(普通)のマクロの実行中にそのファイルを読み込んで、 マクロを実行させることは可能でしょうか? 可能なら方法をお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もう少し詳しく説明した方が、回答がもらいやすいですよ。 外部ファイルとは? 推測で回答すると、マクロとあるので Excel のブックのことかな? なら Run メソッドですかね、、、 手順としては、 1. Workbooks.Open("ブックのフルパス") でそのファイルを開く 2. Application.Run("ブック名!マクロ名,引数1,引数2,....,引数30) でマクロを実行 Run メソッドについて VBA のヘルプを参照して下さい。 です。 外部ファイルとは「マクロが記述されたテキストファイル」というのは あまり想像したくない、、
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
> そして、excel_macro.txt のファイルに > 以下のように記述したいのです。 > Range("B2").Select > ActiveCell.FormulaR1C1 = "abc" > Range("B3").Select C は良くわかりませんが、Perl や PHP でもコードの重複部分を共通化 するため、その部分だけを外部ファイル(include ファイル)にするのは、 良く使われる手法ですよね。 結論から言えば、残念ながらこの用途で include ファイルを扱うことは VBA を含め VB では仕様上不可能です。 ご質問を拝見する限り、関数化(サブプロシージャ化)で対応できそうな 気がしますが、それではダメなのですか? 過去の Office では VBA で VBA のコードを書くことが可能だったので、 1. 外部テキストを読み込み 2. 一時モジュールを追加 3. 元のコードに読み込んだコードを追加し、プロシージャを書き出し 4. 書き出されたプロシージャ実行 5. 実行後一時モジュールを削除 みたいな流れでできたかもしれません、、、 # 実際にやったことはありません。 しかし、現在ではセキュリティー上の理由で VBA から VBA のプロジェクト にアクセスすることが禁止されてしまいました。 つまり、VBA では個々のプロシージャにおいて重複する部分があったと しても、それぞれにきちんと書くか、これが非効率なのであれば、クラス や標準モジュールでサブプロシージャにするしか方法はなさそうです。
お礼
ありがとうございます。
- nicotinism
- ベストアンサー率70% (1019/1452)
アドイン?かな Excelでユーザー定義関数をアドインとして提供する http://www.atmarkit.co.jp/fwin2k/win2ktips/471funcadin/funcadin.html Excelでお仕事 http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub06_030.html
お礼
ありがとうございます。 参考になりました。
- -yellowtail-
- ベストアンサー率65% (43/66)
外部ファイルって、それもエクセルですよね? Workbooks.Open "C:\Book1.xls" Application.Run "Book1.xls!test" こんな感じで出来ると思います。 Book1.xlsのtestというモジュールを実行します。
お礼
ありがとうございます。 このやり方で出来ました。
お礼
ありがとうございます。 このやり方で出来ました。
補足
いいえ、違います。 普通のマクロの所に 以下の様に記述(C言語を例に取ると) Sub Macro1() #include "excel_macro.txt" End Sub そして、excel_macro.txt のファイルに 以下のように記述したいのです。 Range("B2").Select ActiveCell.FormulaR1C1 = "abc" Range("B3").Select 理由は、複数のマクロで 全く同じプログラムが数行に渡ってあるので、 その全く同じプログラムの部分を、 外部ファイルとして一箇所にまとめて 呼び出すようにしたいのです。