• ベストアンサー

エクセルのVBAについて

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

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

  • ベストアンサー
回答No.3

[Activeworkbook.Name]はマクロを実行しているブックが、アクティブになっている場合はそれでいいですが、 アクティブになっていない場合は(他のブックがアクティブになっている場合) Sub a() With ThisWorkbook flname = .Path If (Right(flname, 1) <> "\") Then flname = flname & "\" End If flname = flname & .Name End With MsgBox flname End Sub とすれば、マクロを実行しているファイル名が取得できます。 [path]はマクロのブックが、1度保存されていないとでません。 途中で[\]の操作がありますが、 例えば Cドライブのカレントディレクトリならば、[C:\]と取得できますが、 CドライブのWindowsフォルダならば、[C:\Windows]と終りに[\]が付いてきません そこで、終りに[\]があるか判断し、無ければ[\]を付ける操作をしています。

その他の回答 (2)

回答No.2

初めまして。次の式で取得できます。 変数 = ActiveWorkbook.Path & ActiveWorkbook.Name お試しになってみて下さい。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

ActiveWorkbook.Path とActiveWorkbook.Name かな。

関連するQ&A

  • エクセルVBAについて (データのマッチング)

    過去ログで解決できなかったのでここに書かせていただきます。 エクセルのVBで下記のプログラムを作成したいのですがうまくマクロが組めません。 ファイル名:TEST01.xls ファイル名:TEST02.xls があります。 TEST01.xlsにあるA列のデータとTEST02.xlsのA列にあるデータが一致したおり、かつTEST02.xlsのD列のデータが『×』の場合のみ、TEST01.xlsのB列に固定の文字(test)を入力し、TEST01.xlsのC列に入力されているデータを削除するプログラムを作りたいです。 ご存知の方がいらっしゃれば、ご教授よろしくお願い致します。

  • 【大至急】excel2003 VBAマクロの質問

    excel2003でのVBAマクロを作っているのですが、いまいちよくわからないのです 下記条件を満たすサンプルコードのご教示をお願いします。 ■初期状態 仮にフォルダ、ファイル配置が下記の通りだとします C:\マクロ.xls C:\template.xls C:\aaa\ C:\bbb\bbb_test.xls C:\ccc\ . . . C:\nnn\ ■動作要件 (1)マクロ.xlsは自分のファイルパスを検索する (2)マクロ.xlsと同じフォルダにあるサブフォルダ配下に、各々フォルダ名_test.xlsというファイルを作成する (3)上記(2)で.xlsファイルを作成するとき、template.xlsをコピーして作成する (4)既にサブフォルダ配下に***_test.xlsファイルが存在する場合は作成しない <マクロ実行後の状態> C:\マクロ.xls C:\template.xls C:\aaa\aaa_test.xls ←template.xlsからコピー作成 C:\bbb\bbb_test.xls ←ファイル作成、上書きはしない C:\ccc\ccc_test.xls ←template.xlsからコピー作成 . . . C:\nnn\nnn_test.xls ←template.xlsからコピー作成 (5)上記(1)-(4)を、フォルダがなくなるまで繰り返す 以上です。よろしくお願いします。

  • エクセルVBA

    こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

  • VBAでperlのプログラムを使う

    EXCELのVBAでマクロをくみ、perlのプログラムを起動することは可能でしょうか? またperlのプログラム内容が起動パスのところにあるファイル名を取得するプログラムなのですが、 これでEXCELのマクロを実行したパスにあるファイル名を取得することはできるのでしょうか?

    • ベストアンサー
    • Perl
  • 新規作成したExcelにVBAを登録したい

    お世話になります。 下記の手順で、新規のExcelにVBAを登録し、 実行したいと思っております。 (1)「元ファイル.xls」から、VBAで新規Excelbookを作成 (2)名前を「テスト.xls」にする (3)「テスト.xls」にVBAコードを登録する (4)(3)で登録したVBAを実行する そこで、(3)のVBAコードを登録する方法がわかりません。 お手数ですがご存じの方教えて頂けないでしょうか? 何卒宜しくお願い致します。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • エクセルVBAで

    ローカルディスクCのフォルダ内にあるエクセルブックのすべてのファイル名を取得するマクロを作りたいのですがご教授宜しくお願い致します。

  • エクセル VBA データのマッチング

     エクセルのVBで下記のプログラムの作成をしたいのですがうまくマクロが組めません。 ファイル名:TEST01.XLS ファイル名:TEST02.XLS があります。 TEST01.XLSにあるA列のデータ、TEST02.XLSにG列にあるデータが一致した場合のみ、一致した行にあるTEST01.XLSのB列にある4桁のコードを一致したTEST02.XLSのL列に表示させるプログラムを作りたいです。 すみませんが回等お願いできませんか。

  • エクセル2003で作ったVBAが2007で動かない

    現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。 どなたか、解決方法をご教授頂けないでしょうか? ・VBAを含んだファイルを開いて、マクロを有効にすると ”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。 ・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか? どうぞ、よろしくお願い致します。

  • VBAでエクセルからのファイル名とテキスト化を自動で実行する方法

    マクロを実行して、エクセルのセルからファイル名とテキストファイルを自動で出力したいのですが、VBA初心者なのでプログラムの書き方がわかりません。 どうかVBAのプログラムの書き方を教えて下さい。 【マクロ実行前のエクセル状態】 1.エクセルのA列にファイル名1を入力 2.エクセルのB列にファイル名2を入力 3.エクセルのC列にテキスト出力させたい文字列を入力 【期待のマクロ動作】 ファイル名1+ファイル名2のファイル名でC列の文字列をテキストファイルで出力。 《例》 A B C 1 2 あ ⇒マクロ実行⇒ファイル名『12』テキスト内容『あ』 3 4 い ⇒マクロ実行⇒ファイル名『34』テキスト内容『い』 5 6 う ⇒マクロ実行⇒ファイル名『56』テキスト内容『う』 7 8 え ⇒マクロ実行⇒ファイル名『78』テキスト内容『え』 ・ ・ ・ ・ 上記の様に、一回のマクロ実行で入力されている列のセル全て がファイル名付きのテキストファイルとして出力をさせたいです。 申し訳ありませんが、よろしくお願いいたします。

専門家に質問してみよう