VBAで現在のワークシートのパスを取得する方法


141

マクロをアドインとして作成しました。マクロが実行されている現在のワークシートのパスを取得する必要があります。どうすればよいですか?ファイルパス(ディレクトリのみ)を取得するにはどうすればよいですか?


ワークシートが与えられたときに、親ワークブックが保存されているフォルダを知りたいということですか?
Mathias

回答:


264

Application.ActiveWorkbook.Pathパス自体(ワークブック名​​なし)またはパスにのみ使用しApplication.ActiveWorkbook.FullNameますワークブック名。


24
アクティブなワークブックは、アクティブなワークブックによって異なります。USe Thisworkbook.path
Alwyn Miranda

6
もちろん、どちらもさまざまな状況で役立ちます。元の質問は、マクロがアドインブック(ThisWorkbook.path)にあるが、ユーザーが必要に応じて他のブック(ActiveWorkbook.path)に対してコードを実行する必要があることを意味します。
BradC 2016

2
常に明示的である必要があります-このワークブックの場合、application.thisworkbook.pathである必要があります。開いているワークブックの場合、名前はセットで定義し、次にapplication.Variablename.path(またはフルパス)を使用して定義する必要があります。
Selkie、

@Selkie コード自体がワークブックを開く場合は、確認してください。ただし、これが単にアドインブックに存在するヘルパーマクロであり、ユーザーがマクロを呼び出したときにユーザーが現在開いているブックを操作するActiveWorkbook必要がある場合は、必要なものが必要です。
BradC 2017年

3
Excel.ActiveWorkbook.Pathファイルが少なくとも1回保存されている場合にのみ機能します。また、ファイルが一度も保存されていない場合Excel.ActiveWorkbook.FullNameは、ファイル名のみを返します。ワークブックが保存されているかどうか確認することをお勧めします。
ChrisB

37

いつも持っていることは素晴らしい:

Dim myPath As String     
Dim folderPath As String 

folderPath = Application.ActiveWorkbook.Path    
myPath = Application.ActiveWorkbook.FullName

27

マクロが実行されている場所からワークブックのパスを取得する場合は、を使用しますApplication.ThisWorkbook.Path
Application.ActiveWorkbook.Path予期しない結果が生じることがあります(たとえば、マクロが複数のワークブック間で切り替わる場合)。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.