我期待中檢索一個txt文件,然後(從以R01到.TXT)編輯(添加「轉換」的文件名)的文件名和擴展名。 這樣做的目的是讓我知道如果txt文件已被轉換獲取和編輯文件名
這是我的代碼到目前爲止,
Dim infilename As Variant
infilename = Application.GetOpenFilename("Text & r01 Files (*.r01;*.txt),*.r01;*.txt", , "Open Neutral File", "OPEN")
我期待中檢索一個txt文件,然後(從以R01到.TXT)編輯(添加「轉換」的文件名)的文件名和擴展名。 這樣做的目的是讓我知道如果txt文件已被轉換獲取和編輯文件名
這是我的代碼到目前爲止,
Dim infilename As Variant
infilename = Application.GetOpenFilename("Text & r01 Files (*.r01;*.txt),*.r01;*.txt", , "Open Neutral File", "OPEN")
我得到了一個線我在用Sean Cheshire的部分代碼尋找什麼。
Dim newFileName As Variant
newFileName = Left(inFileName, (InStrRev(inFileName, ".") - 1)) & "CONVERTED.txt"
InStrRev
可以讓你找到最後.
並刪除它,並從字符串
FileNameWithoutExt = Left(Filename, InStrRev(Filename, ".") - 1)
與工作簿全名的例子:
?activeworkbook.FullName
Z:\個別文件夾\肖恩\ transfers2.xlsx
?Left(activeworkbook.FullName, InStrRev(activeworkbook.FullName, ".") - 1)
Z:\個別文件夾\肖恩\ transfers2
您可以將這些包裝在一個函數中,以使它們更易於使用。我還添加了一個功能,這將使文件名唯一,而不是一個完整路徑
Function FileNameOnly(fName)
'Changes "C:\Path\Filename.ext" to "Filename.ext"
FileNameOnly=mid(fName,instrrev(fName,"\")+1)
End Function
Function DelExt(fName)
'Changes "C:\Path\Filename.ext" to "C:\Path\Filename"
DelExt=left(fName,instrrev(fName,".")-1)
End Function
然後,您可以在程序中使用這些,與像NewFileName=DelExt(infilename) & "CONVERTED.txt"
如果我想刪除最後一個'.'後的一切,那麼這也會工作嗎? –
對不起,我的解釋並不是100%清晰 - 修正 – SeanC
它不起作用。我的文件在變量_infilename_下。我把變量名放在_Filename_的位置,運行代碼,什麼也沒有發生 –
你很不清楚。很難說出你在問什麼。你想重命名一個文件嗎? – 2013-07-22 14:38:40
我想獲取任何現有的文本文件(使用「打開文件」提示),然後編輯目錄。而已。 –
目錄中的任何現有文本文件?並編輯什麼?文件名或目錄名?新名字來自哪裏?我們不介意讀者 – 2013-07-22 15:18:25