質問

エクセルのマクロを記述した外部ファイルを作成しておいて
メイン(普通)のマクロの実行中にそのファイルを読み込んで、
マクロを実行させることは可能でしょうか?
可能なら方法をお願いします。

通報する

回答 (4件)

> そして、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 では個々のプロシージャにおいて重複する部分があったと
しても、それぞれにきちんと書くか、これが非効率なのであれば、クラス
や標準モジュールでサブプロシージャにするしか方法はなさそうです。

この回答へのお礼

ありがとうございます。

アドイン?かな
Excelでユーザー定義関数をアドインとして提供する
http://www.atmarkit.co.jp/fwin2k/win2ktips/471fu …

Excelでお仕事
http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub0 …

この回答へのお礼

ありがとうございます。
参考になりました。

外部ファイルって、それもエクセルですよね?
Workbooks.Open "C:\Book1.xls"
Application.Run "Book1.xls!test"
こんな感じで出来ると思います。
Book1.xlsのtestというモジュールを実行します。

この回答へのお礼

ありがとうございます。
このやり方で出来ました。

もう少し詳しく説明した方が、回答がもらいやすいですよ。

外部ファイルとは?

推測で回答すると、マクロとあるので Excel のブックのことかな?
なら Run メソッドですかね、、、

手順としては、

 1. Workbooks.Open("ブックのフルパス") でそのファイルを開く
 2. Application.Run("ブック名!マクロ名,引数1,引数2,....,引数30)
   でマクロを実行

   Run メソッドについて VBA のヘルプを参照して下さい。

です。

外部ファイルとは「マクロが記述されたテキストファイル」というのは
あまり想像したくない、、

この回答へのお礼

ありがとうございます。
このやり方で出来ました。

この回答への補足

いいえ、違います。
普通のマクロの所に
以下の様に記述(C言語を例に取ると)

Sub Macro1()
#include "excel_macro.txt"
End Sub

そして、excel_macro.txt のファイルに
以下のように記述したいのです。

Range("B2").Select
ActiveCell.FormulaR1C1 = "abc"
Range("B3").Select

理由は、複数のマクロで
全く同じプログラムが数行に渡ってあるので、
その全く同じプログラムの部分を、
外部ファイルとして一箇所にまとめて
呼び出すようにしたいのです。

このQ&Aは役に立ちましたか?0 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピにAndroid版アプリが登場

話題のトピックにさくっとコメントできる「おしトピ」に Android版アプリが登場! もっと身近に使いやすくなりました。
今ならダウンロードで話題の掃除ロボットや全天球カメラが 当たるプレゼントキャンペーンも実施中。

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集