2017-04-04 61 views
2

我有一個重命名文件的VBA宏。我有這個文件存在的完整路徑,但我想獨立於它的位置重命名此文件。重命名提取文件的位置

Private Sub Workbook_Open() 
    Dim sFileName As String, sNewFileName As String 

    sFileName = "C:\Users\me\Desktop\text.txt"  
    sNewFileName = "C:\Users\me\Desktop\test1.txt"  
    If Dir(sFileName, 16) = "" Then MsgBox "File not found", vbCritical, "Error": Exit Sub 

    Name sFileName As sNewFileName 'rename file 

    MsgBox "file has been renamed" 
End Sub 

我的意思是,如果你提取這個Excel文件和文件text.txt並啓動存檔時,會發現test.txt並重新命名它獨立於它的位置。

+0

對不起朋友,你說你想重命名的文件,並沒有名稱中的完整路徑? – Miguel

+0

是的,可能是我應該提取文件的地方嗎?但idk它是如何在VB上看起來 –

+0

短語'*開始它*'擔心我;你是否嘗試重命名已在Excel應用程序實例中打開的文件,或者您是否嘗試重命名已關閉的文件,然後使用新名稱打開該文件?前者是不能做到的;它是一個SaveAs操作而不是重命名。 – Jeeped

回答

2

您正在尋找ThisWorkbook.Path這給你,你正在使用的工作簿的路徑。所以,如果你的txt文件是在同一目錄下,你可以使用這樣的事情:

sFileName = ThisWorkbook.Path & "\text.txt" 
sNewFileName = ThisWorkbook.Path & "\test1.txt" 
+0

非常感謝! –

0

當excel文件位置與文本文件位置相同時,您不必編寫方向路徑。

只寫文件名沒有其方向路徑:

sFileName = "test.txt"  
sNewFileName = "test1.txt"  
+0

如果我這樣做,它會顯示我找不到文件的錯誤 –