• ベストアンサー
  • すぐに回答を!

エクセルのVBAについて

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数53
  • ありがとう数1

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

  • ベストアンサー
  • 回答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]と終りに[\]が付いてきません そこで、終りに[\]があるか判断し、無ければ[\]を付ける操作をしています。

共感・感謝の気持ちを伝えよう!

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • エクセルVBA

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

  • <ACCESS VBA -> EXCEL>getObjectしたEXCELファイルのシートを指定したい

    ACCESSのVBAマクロでEXCELファイルを指定してデータを取得しようとしています。 GetObject("C:\ファイル名.xls", "Excel.Sheet") でEXCELファイルを取得するまでは良いのですが、そのファイルのシートを指定する方法がわかりません。 基本かもしれませんが、ご教示をお願いします。

その他の回答 (2)

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

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

ActiveWorkbook.Path とActiveWorkbook.Name かな。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • VBA マクロ付きExcelファイルを無効で開く

    タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

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

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

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

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

  • フォルダ内にあるファイル名を取得するVBA

    エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 「マクロ」ファイルにある「実行」Sheetというにある「実行」ボタンで L2に入力したパス内にあるファイル(.xlsや.xlsmや.xlsbが混在しますが、基本的には全てエクセルファイル)のファイル名を K8から下へ取得したいのですが・・ 参考にしたコードでは うまく動作しませんでした。 以下では、L2のパスを参照するのも組めていないため、コード内に直接パスを書き込んでいますが 実際は、パスを変動させて使いたいので、L2を参照できるようになると助かります。 ※パスは、質問用に仮置きで「パス」としています。 Sub Sample() Dim buf As String, cnt As Long Const Path As String = "パス" buf = Dir(Path & "*.*") Do While buf <> "" cnt = cnt + 8 Cells(cnt, 11) = buf buf = Dir() Loop End Sub また、このコードでは 実行ファイル自体のファイル名も取得してしまうようなので、 実行ファイル以外のファイル名を取得したいです。 ご指導のほど、よろしくお願い致します。

  • EXCEL VBAでカンマ区切りCSVファイルに変換する方法

    EXCELで作成したシートをVBAでカンマ区切りCSVファイルに変換する方法を教えてください 下記のプログラムではXLSファイルで保存されますが、カンマ区切りCSVにする方法が分かりませんでした。 '保存先パス名 NetPath = "V:\AAAA\" ' セルA1 には、ファイル名記入 BkName = ThisWorkbook.Sheets("Sheet1").Range("A1").Text & ".XLS" 補足:マクロを実行した時に自動でネットワークドライブ(V:\AAAA)へ保存、ファイル名はSheet1のセルA1の文字をファイル名として 保存するようにしたいです。 宜しくお願い致します。

  • エクセル付きVBでファイルオープンすると止まる

    エクセル付きのVBでショートカットキーでマクロを起動し、他のエクセルのファイル(ブック)をオープンするとプログラムが止まり、以降のマクロを処理できません。VBの画面で実行ボタンをクリックするとマクロ通りに正しく処理されるので、マクロ自体に問題はないと思います。 どなたか同様の経験をされた方、もしくは解決方法をご存知の方、解決方法を教えてください。 マクロは「Workbooks.open("パス\ファイル名")」または「workbooks.open FileName:="パス\ファイル名"」としており、どちらも止まります。

  • EXCEL- VBA(CSVファイル→インポート)

    A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】   ◆ファイル名「*.CSV」*は文字数それぞれ違います。   <例:tanaka.xls だったり 09福島.xls>  ◆入っているドライブ   TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習  ◆A~F列にデータが入っている 【やりたいこと】    (1)A~F列はカンマ区切りで全て文字列としたい  (2)元のファイル名でエクセルとして保存したい「*.XLS」

  • エクセル マクロ ファイル名の(追加)取得

    エクセル2010を使用しています。 VBA(マクロ)で以下の作業を実行したいと考えていますが、 初心者につき、ご教示いただけますでしょうか。 現在、マクロ実行ファイル(エクセル)と同じフォルダ内にあるファイルの ファイル名を全て(マクロ実行ファイルに)記載する というマクロを使っています。 ※以下です。 Sub ファイル名取得() FolderPath = Cells(10, 7).Value 'パスは、G10セルから読み込む buf = Dir(FolderPath & "\*.*") cnt = 9 '実施行-1行目を指定 Do While buf <> "" If (buf Like "*.xls?") And buf <> ThisWorkbook.Name Then cnt = cnt + 1 Cells(cnt, 6) = buf 'F10からファイル名を記載 End If buf = Dir() Loop End Sub 現在、このマクロだと都度「上書き」になっているのですが 使用上の都合で 上記を実行して記載されたファイル名に 「追加」することもできると助かるのに・・と考えています。 ※以下「2」を質問させていただています! →1.マクロファイルと同じパスにあるファイルのファイル名を取得(記載):上記マクロで実行中 →2.1を実行後、同パスにファイルを追加し、ファイル名取得(記載)も1の後に追記 上記マクロは上記として、別途「追加」機能としてのマクロ(VBA)でも構いませんし、 上記を変更して「追加」にも対応できるマクロ(VBA)でも構いません! 具体的にイメージできていないまま質問してしまっているかもしれないので、 いくつかケース(構造)があるようでしたら、 ご面倒でなければ どのような動きがスムーズなのか? エラーが出にくいのか?等 併せて ご教示いただけますと、幸いです。 尚、説明がわかりにく等あれば 当然、補足させていただきますので、 ご指摘ください! よろしくお願い致します。

  • 新規作成したExcelにVBAを登録したい

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

  • VBA(Excel2007からExcel2003の注意事項)

    Excel2003のマクロが起動しません。 Excel2007で新しいマクロの記録(自動)を行ったExcelファイルがあります。それを別のPCのExcel2003で実行すると、エラーが発生し、プログラムが停止します。 (両方のファイルの拡張子は***.Xlsです。) VBAでExcel2003から2007にバージョンアップでは問題ないようですが、2007から2003にバージョンダウンするうえで注意事項があれば、教えて下さい。よろしくお願いします。