2009-12-13 14 views
19

私のExcelファイル内にVBAを書いています。sample.xls。今私はフルパスsample.xls私のVBAにしたいです。どうすればいいのですか?VBAのファイル名/パスを取得する方法

+1

VBScript * inside * sample.xlsと言うとき、VBAはExcelにとってネイティブですか? – Fionnuala

+0

@Remou はい、それはVBAです。 – Veera

+1

タイトルとタグを訂正したいのですか? – Oorang

答えて

23

あなたはVBAを意味するならば、あなたはフルネームを使用することができ、例えば:

strFileFullName = ActiveWorkbook.FullName 
+11

ThisWorkbook.FullNameを意味しますか? ;) – Oorang

+4

必ずしもそうではありません。 – Fionnuala

+13

Oorangのコメントは正しいです: 'ThisWorkbook.FullName'は正しい安全な呼び出しでしょう。 Veeraの質問によれば、「私はVBA *をエクセルファイルsample.xlsの中に書いています。今は私のVBAでsample.xlsのフルパスを手に入れたいです。この場合、 'ThisWorkbook.FullName'を使用することは正しいことが保証されていますが、 "sample.xls"が現在アクティブなブックでない場合、 'ActiveWorkbook.FullName'は間違った答えを与える可能性があります。 –

7
strScriptFullname = WScript.ScriptFullName 
    strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) 
+3

opには* inside * sample.xlsと書かれているので、VBScriptが疑わしい。私はVBAを疑う。 – Fionnuala

0

ActiveWorkbook.FullNameは私が考えて良いだろう、ケースであなたは、別のExcelワークブックに保存されているVBAマクロを持っていますマクロが存在する場所ではなく、編集中のExcelの詳細を取得する必要があります。

同じファイルに存在する場合は問題ありませんが、ファイルが異なる場合に、マクロが存在する場所ではなくDataの場所にファイルを保存する場合は、ActiveWorkbookが必要です両方のシナリオを処理するためです。

2

これはすべての応答、フルネーム、パス、ファイル名を与える簡単な代替方法です。

Dim FilePath, FileOnly, PathOnly As String 

FilePath = ThisWorkbook.FullName 
FileOnly = ThisWorkbook.Name 
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly)) 
+0

'PathOnly = Left(FilePath、Len(FilePath)-Ren(FileOnly))'を実行すると、 'PathOnly = ThisWorkbook.Path'と書くことができます。 – EBH

関連する問題