• ベストアンサー

VBAを利用して、呼び出し元マクロのフルパスを取得

現在、エクセルマクロの勉強をしているのですが、ご質問があります。 早速ですが、[マクロA]から[マクロB]を呼び出す時、[マクロA]のフルパスを[マクロB]から取得する事はできるのでしょうか。 [マクロA]のファイル名に関しては、"AAA_111.xls"だったり"AAA_222.xls"だったりします。 あいまい検索で実行中のブックの名前を取得し、そのファイル名を元にフルパスは分かるものでしょうか。 もしくは、効率の良い方法がありましたら、ご教授下さい。

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

  • ベストアンサー
  • ss-ak
  • ベストアンサー率58% (23/39)
回答No.1

どういう要件で、そのようなことをしたいのかによって、最適なやり方は異なるかと思いますが、マクロAの側から、引数でフルパスを渡す方法が、一般的にはシンプルで、複雑な不具合の入り込む可能性が低く良いのではないかと思います。

その他の回答 (1)

  • ss-ak
  • ベストアンサー率58% (23/39)
回答No.2

追記: ても、そもそも、複数の文書ファイルにまたがってマクロを持たせる、という構造そのものが、あまり筋がよくないと思います。 本当にそんな複雑な構造にする必要があるのか、というところから、抜本的に設計を再検討した方が良いかもしれません。 (そういう構造が良さそうなケースも、全く思い当たらないわけではないのですが、かなり特殊なケースなのでは、と思うので)

akua0331
質問者

お礼

ご指摘ありがとうございます。 夫々のマクロを個々で使用する予定でしたが、まとめて実行する場合があり、[マクロA][マクロB][マクロA+B]とした際の、メンテナンスを手間と考えた為、ご質問させて頂きました。 ご対応頂きまして、ありがとうございました。

関連するQ&A

  • VBAのパスの取得について

    excelでマクロをVBAで組み、excelが現在置かれているところのパスを取得したのですが たとえばCのaaというファイルのbbところにおいて実行すると変数aに C:\aa\bb を取得することができました。 このパスの最後に\をつけて C:\aa\bb\ にしたいのですがどの書けば変数aに\を追加できるのでしょうか?

  • EXCELのマクロの有効範囲について

    (1)EXCEL2000にてブックが2つあって、それぞれに個人用マクロブックがある場合、お互いの個人用マクロブックのマクロの実行するにはどのようにマクロの記述をすればいいですか? BOOK1 マクロA1、A2、・・・、A5 BOOK2 マクロB1、B2、・・・、B5 のとき マクロA1の中でマクロB2を実行する (2)EXCEL2000にてブックが1つあって、個人用マクロブックとPERSONAL.XLSがある場合、PERSONAL.XLSの中で個人用マクロブックのマクロの実行するにはどのようにマクロの記述をすればいいですか? PERSONAL.XLS マクロA1、A2、・・・、A5 BOOK1     マクロB1、B2、・・・、B5 のとき マクロA1の中でマクロB2を実行する

  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

  • マクロを登録したボタンの表示を変更するマクロ

    かなり難易度が高いと思いますが、Excelのマクロでこんなことできませんか? Excelのボタン(表示名:ファイル取り込み)にあるマクロを登録し、このマクロを実行するとファイル選択ウインドウが開き、ここでフルパス指定(仮にc:\aaa\bbb.xls)であるファイルを選択する。 すると、ボタンの表示が”参照ファイル”に変わり、参照ファイルをクリックするとc:\aaa\bbb.xlsが別Windowオープンになる。

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • マクロ

    下記のマクロがあります。 filname = Application.GetSaveAsFilename("テスト","Microsft Excelブック *.xls,(*.xls)", 1, "データファイルを保存") filnameには絶対パスとファイル名が取得されると思うのですが、 それを分けて取得したいのです。 分けて取得は出来るのでしょうか。 一旦filnameで取得しておいて、 それから分ける、という方法が一番ベストなのですが…。 どなたかご存知の方ご教授願います。 宜しくお願い致します。

  • XCELのVBAマクロで次のことが実行できますか。

    XCELのVBAマクロで次のことが実行できますか。 (前提)WINDOWSで (1)MYDOCのフォルダAにExcelファイルA1.xlsからA9.xlsまで9個のファイルと、もう一つマクロBBの入ったExcelファイルB.xlsがあります。 (2)各Ai.xlsには、Aisheet(i=1カラ9)と名前のsheetが1つのみあります。 (処理したいこと) A1.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 続いて同様にA2.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 以下A9まで実行したい。 (質問)Bのマクロに新たにCCというマクロを作り、CCを実行することで、自動的に(処理したいこと)を実行してしまうようなものを作れますか。 また作るとしたらおおよそどんな風に作ればいいでしょうか。 ご回答よろしくお願いします。

  • アクティブなブックのマクロの実行について

    現在使用しているエクセルのブックがあり、ブック名はA(Ver1.0)とします。 このブックにApplication.Run "'A(Ver1.0).xls'!(1)"…Application.Run "'A(Ver1.0).xls'!(20)"というマクロがあります。 ブック名をマクロ実行前に必ず変更しなければならなくて、そのブック名は毎回違ったものになります。 わざわざブック名を変更せずに、現在開いているブックのマクロを実行するという風にしたいのですがどうしたらいいですか? よろしくお願いします。

  • VBAで別プロセスのExcelのフルパスの取得

    いつもお世話になります。 Excel VBAで別プロセスで起動しているExcelブックのフルパスの取得方法を教えて頂けないでしょうか。 前提としては、ファイル自体はローカル環境に保存されているが、どこに保存されているかは分からない、というものになります。 別プロセスの場合はあらかじめフルパスが分かっていれば取得できるといったものはあったのですが、それをそもそも取得したいというのは見つけることができませんでした。 そもそもやりたいのは、プロセスが同じ、別であるに関わらず、起動している全てのExcelブックに対して、マクロを実行したいのですが、フルパスが分かれば処理を行うことができると考え、このような質問をするに至りました。 使用しているExcelは2003になります。 宜しくお願いします。

  • EXcelのマクロで相対パスでファイルを開く

    Excelでマクロを使って他のブックを開こうとしています。 同じフォルダ内のブックを開くには Workbooks.Open Filename:=ThisWorkbook.Path & "\ブック名.xls" で開く事が出来たのですが、一つ上の階層にあるブックを開きたいときはどのようなコマンドを使えば良いのでしょうか?? お教え下さい。

専門家に質問してみよう