
タイトルでは何をどうしたいのかわかりにくいと思うので、私がしたいことを以下に書きます。
-------------------------------
Dim A as String
A = "ThisWorkbook.path"
*
Debug.print A
-------------------------------
このコードを実行したときに、このブックの保存場所を示すPATHを表示したいです。
このようなことが可能なのか不可能なのか、もしできるのであればどのようなコードを書けばよいのか教えてください。よろしくお願いします。

No.3ベストアンサー
- 回答日時:
以下のようなことでしょうか?
-------------------------------
Dim A As String
A = "ThisWorkbook.path"
If A = "ThisWorkbook.path" Then
A = ThisWorkbook.path
Else
'Aのパス名をそのまま使用
End If
Debug.Print A
---------------------------
Aの内容が"ThisWorkbook.path"なら、そのbookのパスを求め、
そうでないなら、Aをそのまま指定されたパスとして使います。
回答ありがとうございます。
一応、そのような手段を使ってコードを書く方法は思いついており、現状はおおよそそのようなコードになっております。
今回の質問の意図としては、どのように解決するかというよりは、技術的に可能なのかが気になるという側面が強いです。
No.5
- 回答日時:
こんばんは。
>そのような手段を使ってコードを書く方法は思いついており
#3さんの書いた方法は思いつかないですね。(^^;
とても、私には、ユニークだと思いましたが……。
なお、私が、#2で書いた内容は、まったく次元に違うことです。文字列をVBAのコマンドラインに書き込むことです。
>特定のファイルを複数の候補フォルダから探すようなコードを書いているのですが、
そこには、何かの誤解が混じっているように思います。それが、元のご質問の内容に繋がるなら、ロジックそのものが違っています。そのような所には、ほぼ、ThisWorkbook.Path などは出てきません。ThisWorkbookは、特定のファイルではなく、現在、マクロを動かしているブックのことです。「ほぼ」と言うのは、それは、一種のマジックナンバーだからです。それは、定数のようで定数でないからです。つまり、該当することもたまにはあるということです。
かつては、FileSearch というコマンドがありましたが、今は、ありませんので、自分で組み込むしかありません。
>技術的に可能なのかが気になるという側面が強いです。
私としては、可能か可能でないかというような話はついていけませんが、ファイルを探して、そのフォルダーを出すぐらいなら、VBAですと、だいたいは、Dir 関数を使うことが多いのではないかと思います。
http://officetanaka.net/excel/vba/tips/tips36.htm
ここにも、FileSystemObject を使った書き方がありますが、もう少しこれは詰めないと、今回の要件とは少し外れています。例えば、VBA から、command line(Shell) で、Path を作っておいて、Where コマンドで探すという方法もあります。子プロセッサですから、Path は、テンポラリーでしかありません。それが残ってトラブルを起こすこともありません。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1151w …
私としては、このぐらいまでです。
ThisWorkbook.pathをコードに組み込みたい理由は、ブックが保管されているフォルダに例えば"Work"のような作業用のサブフォルダをつくり、そこに保管するのを前提とした上で、必要であれば利用者が任意で作業フォルダを選択できるようなオプションをつけたかったからです。
とにかく、少なくとも私の技量では難しいと判断しましたので、自分が考えていた仕様は少し変えることにしました。何度も回答していただき、ありがとうございました。

No.4
- 回答日時:
#3です。
>一応、そのような手段を使ってコードを書く方法は思いついており、現状はおおよそそのようなコードになっております。
>今回の質問の意図としては、どのように解決するかというよりは、技術的に可能なのかが気になるという側面が強いです。
実際に、#3のコードを実行すると、私の環境では、
c:\goo
が表示されました。(c:\gooにexcelファイルが保存されています)
ですので、技術的に可能です。
あなたも、実際に簡単なテストプログラムを作って試されれば、納得できるかと思います。
回答ありがとうございます。
tatsu99さんがおっしゃる方法は、文字列をエクセルの関数でいうINDIRECTのように、直接PATHに変換するのではなく(どういう表現すればいいのかわかりません。間違ってたらすみません)、IFで判定してから変数にPATHを代入しなおしてる感じですよね。
とにかく、自分の技量では実装不可能だと判断したので、ブックが保存されているフォルダは必ず確認するようなコードにしました。
お手数をおかけしました。
No.2
- 回答日時:
こんばんは。
>タイトルでは何をどうしたいのかわかりにくい
文字列を変換して、コマンドにするというのは、禁断とは言わないまでも、ふだんはしませんね。
可能といえば可能なのですが、なぜ必要なのかご説明くださいませんか?
#1さんの回答で十分なはずなのですが、もしかしたら、他のExcelのVBEにプログラムを書くということでしょうか。もし、そうなら、アドインにしたほうがよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/09 12:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
実行ファイルのパスを取得したい
-
【VBA】複数のtxtファイルから...
-
Excel 相対パス
-
xcopyコマンドの進行状況を表示...
-
VBA★PDFをPDFアプリで印刷し...
-
C#でのProcess.Startと変数path
-
コマンドプロンプトのコピー関...
-
開いているファイルを削除し、...
-
パスワード保護されたExcelファ...
-
ExcelVBAの使い方 ¥の使い方...
-
初心者powershellのPS1ファイル...
-
EXCEL(VBA)で指定フォルダ内の...
-
ExcelのVBAで上書き保存を確...
-
【VB.NET】App.configにファイ...
-
Pythonのバージョンに関する質...
-
アクセス 自身のデータベース...
-
リストボックスにファイル名の...
-
OleDbDataAdapterのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでパワーシェルを実行したい...
-
ExcelVBAの使い方 ¥の使い方...
-
C#でのProcess.Startと変数path
-
ExcelのVBAで上書き保存を確...
-
開いているファイルを削除し、...
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
EXCEL(VBA)で指定フォルダ内の...
-
fopenでのパス指定
-
パスワード保護されたExcelファ...
おすすめ情報
特定のファイルを複数の候補フォルダから探すようなコードを書いているのですが、ブックが保存されているフォルダ内を調べる必要がない場合も考えられるので、必要がある場合だけブックが保存されているフォルダのPATHが取得したいのです。
現状、エクセルのSheet1のA1、A2、A3に検索したいフォルダのPATHが入力されています。
その情報をもとに特定ファイルの検索を行います。
このとき、ブックが保存されているフォルダ内を検索したい場合は"ThisWorkbook.path"をA1~A3のいずれかに入力します。
VBAでは"ThisWorkbook.path"はエクセルのシートから文字列として受け取ります。その後、文字列の"ThisWorkbook.path"から例えば「C:\Work」のような結果を得たいのですが、文字列として扱うことしかできないというのが現状です。
特定のファイルを複数の候補フォルダから探すようなコードを書いているのですが、ブックが保存されているフォルダ内を調べる必要がない場合も考えられるので、必要がある場合だけブックが保存されているフォルダのPATHが取得したいのです。
現状、エクセルのSheet1のA1、A2、A3に検索したいフォルダのPATHが入力されています。
その情報をもとに特定ファイルの検索を行います。
このとき、ブックが保存されているフォルダ内を検索したい場合は"ThisWorkbook.path"をA1~A3のいずれかに入力します。
VBAでは"ThisWorkbook.path"はエクセルのシートから文字列として受け取ります。その後、文字列の"ThisWorkbook.path"から例えば「C:\Work」のような結果を得たいのですが、文字列として扱うことしかできないというのが現状です。