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

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

ありがとうございます。

お礼日時:2006/06/03 18:05

アドイン?かな


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

Excelでお仕事
http://www.asahi-net.or.jp/~ef2o-inue/haifu/sub0 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/03 18:04

外部ファイルって、それもエクセルですよね?


Workbooks.Open "C:\Book1.xls"
Application.Run "Book1.xls!test"
こんな感じで出来ると思います。
Book1.xlsのtestというモジュールを実行します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/03 18:04

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



外部ファイルとは?

推測で回答すると、マクロとあるので 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

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

補足日時:2006/06/02 22:28
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/03 18:03

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

このQ&Aを見た人はこんなQ&Aも見ています

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • オシャレは足元から。除光液で靴がピカピカに!

    日々、多くの人と関わる社会人にとって、第一印象が大切だというのは誰もが実感しているだろう。そこで、みなさんは第一印象を良くするために、心がけて意識していることがあるだろうか。例えば、指先のケアや清潔感...

  • かき氷にしか見えない!シャリシャリでつるつるなつるとんたんの夏限定うどんを食べてきた

    蒸し蒸しした日が続くと、梅雨明けが本当に待ち遠しいと思う。まだ気温自体はそれほど高いわけではないが、暑がりの筆者はすでに夜が寝苦しく、冷房のリモコンに手を伸ばしかけてはなんとかギリギリのところで我慢し...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

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

コンピュータやスピーカーなどのオーディオ、スマートフォンをはじめとした携帯電話とそのサービスに関する質問が充実。急なトラブルの対策案もここで得られるかもしれません。

このQ&Aを見た人がよく見るQ&A

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

おすすめ情報

カテゴリ