尝试转换文件,同时保持旧名称

你好,Stackoverflow用户,

我正试图将文件从非微软文件转换为Excel

我已经用以下代码进行pipe理:

Sub FastaToExcel() ' ' Macro ' ' fName = Application.GetOpenFilename() Workbooks.OpenText Filename:=fName, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True ActiveWorkbook.SaveAs Filename:="NewName.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close SaveChanges:=True End Sub 

获取文件转换和重命名。 这工作,一个不错的光泽NexName.xlsx推出。

但是,为了使命名dynamic我尝试了以下代码基于这里的职位( VBA Excel文件到CSV,保持CSV文件名与原始工作簿相同 ):

 Sub Macro1() NewName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5) ActiveWorkbook.SaveAs Filename:="C:\Users\Username\Desktop\" & NewName & ".csv", , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close SaveChanges:=True End Sub 

但是,这不起作用,因为“ActiveWorkbook.Name”会拉取其中包含macros的.xlsm文件的名称以转换文件,而不幸的是,不会使用我想保留的非Windows格式文件的名称名称并将其用于新的.xlsx文件。

任何人都可以帮我解决这个问题吗? 非常感激。

我也尝试过使用@Jeepedbuild议的代码(由@skkakkar提出),在创build这个主题的同一主题中进行了尝试,但是在ActiveWorkbook.SaveAs行中挂起:

 Sub FastaToExcel() ' ' Macro ' ' fName = Application.GetOpenFilename() Dim myPath As String, myFileName As String myPath = "C:\Users\" & Environ("USERNAME") & "\Desktop\" If Not CBool(Len(Dir(myPath, vbDirectory))) Then MkDir Path:=myPath myFileName = Left(ActiveWorkbook.Name, InStr(1, ActiveWorkbook.Name, ".xl", vbTextCompare) - 1) & ".fasta" Debug.Print myPath & Chr(92) & myFileName Workbooks.OpenText Filename:=fName, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True ActiveWorkbook.SaveAs Filename:=myPath & Chr(92) & myFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Close SaveChanges:=True End Sub