2013-07-22 43 views
0

我期待中檢索一個txt文件,然後(從以R01.TXT)編輯(添加「轉換」的文件名)的文件名和擴展名。 這樣做的目的是讓我知道如果txt文件已被轉換獲取和編輯文件名

這是我的代碼到目前爲止,


Dim infilename As Variant

infilename = Application.GetOpenFilename("Text & r01 Files (*.r01;*.txt),*.r01;*.txt", , "Open Neutral File", "OPEN")

+1

你很不清楚。很難說出你在問什麼。你想重命名一個文件嗎? – 2013-07-22 14:38:40

+0

我想獲取任何現有的文本文件(使用「打開文件」提示),然後編輯目錄。而已。 –

+1

目錄中的任何現有文本文件?並編輯什麼?文件名或目錄名?新名字來自哪裏?我們不介意讀者 – 2013-07-22 15:18:25

回答

0

我得到了一個線我在用Sean Cheshire的部分代碼尋找什麼。

Dim newFileName As Variant 
    newFileName = Left(inFileName, (InStrRev(inFileName, ".") - 1)) & "CONVERTED.txt" 
2

InStrRev可以讓你找到最後.並刪除它,並從字符串

FileNameWithoutExt = Left(Filename, InStrRev(Filename, ".") - 1) 

0123以下的一切

與工作簿全名的例子:

?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"

+0

如果我想刪除最後一個'.'後的一切,那麼這也會工作嗎? –

+0

對不起,我的解釋並不是100%清晰 - 修正 – SeanC

+0

它不起作用。我的文件在變量_infilename_下。我把變量名放在_Filename_的位置,運行代碼,什麼也沒有發生 –