• ベストアンサー

VBAで、VBのapp.pathと同じ機能は?

ExcelVBAで、そのExcelファイルが起動されたフォルダーパスを取得する方法はあるのでしょうか? application.pathでは、excel.exeのあるフォルダーパスが返されます。 VB(ver6)のapp.pathのように、そのファイルが起動された(保存されている)パスを知りたいのですが、何か方法はないでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

   ThisWorkbook.Path を試してみてください。  

MusaGoro
質問者

お礼

onlyromさん ご回答、ありがとうございます。 私のやりたい事ができました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>起動されたフォルダーパスを取得する 起動されたでなく、エクセルで読み込まれたブックではないの。 Sub test01() Workbooks.Open ("C:\Documents and Settings\xxxx\My Documents\bbb1.xls") MsgBox ActiveWorkbook.Name 'ActiveWorkbookのブック名 MsgBox ActiveWorkbook.FullName 'ActiveWorkbookのフルパス名 MsgBox ActiveWorkbook.Path 'ActiveWorkbookの絶対パス End Sub ーー エクセルVBAでApplicationはエクセルそのものを指しますから的外れ。

MusaGoro
質問者

お礼

> 起動されたでなく、エクセルで読み込まれたブックではないの。 表現としては、その方が正しいですね。

回答No.1

再現した。 http://www.ozgrid.com/VBA/WorkbookPath.htm とりあえず, ThisWorkbook.FullName でうまくいった。 http://msdn2.microsoft.com/en-us/library/bb148805.aspx

関連するQ&A

  • 【VBAでapp.path が取得できない】

    VBAでapp.path を取得しようとすると、「オブジェクトが必要です」エラーが表示されます。 アプリケーション実行パスを取得する方法はありますか? Excel2000を使用しています。 宜しくお願いいたします。

  • アクティブウィンドウ(ドキュメントファイル)のパス

    VB初心者です。 VB等でアクティブウィンドウのパスを取得する方法を探しています。 タイトルであればGetWindowTextで取得で可能ですし、 アプリケーションのパスであれば、  http://sumishiro.blogspot.jp/2009/09/blog-post_30.htmlが参考になりました。  しかしドキュメントファイルのパスを取得する方法がどうしてもわかりません。 例えば、ワードでtest.docxを開いているとき、そのウィンドウハンドルからwinword.exeのフルパスでなく、test.docxのフルパスを取得する方法です。(ワード、エクセル等だけでなく画像ビューアーが画像ファイルを開いているとき、その画像ファイルのフルパスの取得) どうぞよろしくお願いいたします。

  • テキストファイルからApp.Pathを読み込む

    いつもお世話になっております。 iniファイルに記載されているApp.Pathの文字列を普通に読み込むと"App.Path"という文字列として認識され、実行ファイルのパスが取得できません。iniファイルから読み込んだApp.Pathの文字列を、通常VB上で行ったときと同じように実行ファイルのパスと認識させる何かよい手はないでしょうか コピーするファイルが、実行ファイルのパスだったりSystem32内だったりほかのフォルダだったりする可能性があるので、ソースに直書きできないので困っております。

  • VBAではなく、VBを書いてみたいのですが…

     ExcelVBAを少し勉強したことがある者です。  VBAではなく、VBでEXEファイルを作ったりしてみたいと思っているのですが…。「VBの起動は[プログラム]-[Microsoft Visual Basic6.0]をクリックする」と本に書いてあるのですが、私のPCには[プログラム]の中にそのような項目が見当たらないのです。  ひょっとすると、VBは何かソフトを買ってきてインストールしないと起動できないのでしょうか。そうであれば、何という名前のソフトで、いくらくらいするものでしょうか。  なにぶん、初心者ですので、初歩的な質問お許し下さい。  ちなみにOSは、WinXPのHomeEditionとWin2000を2台使ってます。  よろしくお願いします。

  • Excel での、App.path の取得について

    Excel のマクロ上で、App.path を取得したいのですが、 なにか、手段はありますでしょうか? よろしく御願いいたします。

  • VBでVBAを起動

    こんにちは、VB初心者です。 VB6.0を使用しています。 VBからエクセルのVBAを起動させたいと思っています。 過去ログを参考にして下のようにして実行してみたのですが、 「実行時エラー'1004':マクロ'Keisan'が見つかりません。」 と、エラーが出てしまいVBAを起動することができません。 (ExcelVBAの関数(?)名はKeisan()です。) どうすればエラーを出さずに VBからVBAを起動させることができるのでしょうか? 何か参照し忘れていたり Callの以前に何かを宣言をしておかなければいけないのでしょうか? ******** Dim Wbook As Excel.Workbook Dim Exap As Excel.Application Set Wbook = GetObject("C:\テスト.xls") Set Exap = Wbook.Application     Call Exap.Run("Keisan")

  • ファイルのパスについて

    おせわになります。VBでファイルにアクセスしてデータのInputやOutputを行いたいのですが、常にVBが起動したパスにデータを保存するにはどのように明記すれば良いのでしょうか、例えばこのEXEファイルをフロッピーで起動した時はそのフロッピーにデータファイルを作成するというようにプログラムしたいのですが教えて下さい。

  • エクセルVBAで使うShell関数について

    現在、初心者ながらもエクセルを使って動画や音楽を検索して再生するソフトを作っています。 指定したファイルを、指定したアプリケーションで起動して開きたいと思い、ネットを使って調べたら2つの異なるShellの書き方で動かす方法が見つかりました。 2つのShell関数は同じものなのか教えて下さい。 (1) ret = Shell(Winamp_Path & "winamp.exe /ADD " & """" & Path) と、言う Shell(アプリケーションのフルパス/ADD""ファイルのフルパス) と書いてファイルをアプリケーションで開く方法。 (2) Call Shell(Path & oFile, vbNormalFocus) と、言う Shell(アプリケーションのフルパス, 起動時のウィンドウの状態) と書いてアプリケーションを起動する方法。 この2つは同じ種類のShell関数なのでしょうか。 (1)は、ファイルも一種のアプリケーションとして扱われているんでしょうか。 (2)がShell関数の基本型のようですが、(1)のような書き方が見つかってからは、他にも違う書き方があるかと思うと気になって仕方無いです。 使い方の違いは分かったのですが、調べても(2)の使い方や、別の関数や言語、APIを使ったアプリケーションの書き方しか見つからず、 エクセル2007VBのヘルプを見ても(2)の使い方しか見つからず、 Googleで、「エクセル Shell関数」と調べても、2つの違いが書かれている所が見つからなかったので質問しました。 ※この2つと違う、アプリケーションを起動するShellの記述があるなら、詳しくではなく、参考程度に教えて頂けると、とても嬉しいです。 頭の悪い質問だと思いますが、是非ともアドバイス、宜しくお願いします。

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

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

  • VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい

    VB6.0で現在参照しているエクセルファイルの絶対パスを取得したい 環境:VB6.0/Excel2003/WindowsXP VB初心者です。 現在プログラム内で参照しているexcelファイルの絶対パスと、フォームのテキストボックスに入力された絶対パスを比較して、 それらが同一だった場合エラーを表示するというプログラムを作成しています。 プログラム内では、現在開かれているエクセルファイルの内容をチェックして、対象となるデータを持っているエクセルファイルを1つ選択し、データを取り込むという動きをしています。 現在開かれているファイルのパスと入力されたパスを比較する事は出来たのですが、 そうではなくデータを取り込んでいるエクセルファイルのみ比較したいのです。 (複数のファイルが開かれている場合、データを取り込んでいるファイルとは別のファイルのパスが入力されたファイルパスと同一だったときもエラーとなってしまうので..) データを取得しているところからはフルパスは取れそうにないので、ほかの方法を模索しています。 どうぞ宜しくお願い致します。

専門家に質問してみよう