【发布时间】:2017-07-06 10:22:12
【问题描述】:
请帮助大家!!在下面的代码部分(顺便说一句效果很好),我不断在实际文件名和工作表名中获取 .txt。我一直在寻找解决这个问题需要采取的措施,但我无法解决。我对 VBA 很陌生,所以我正在尽我所能请帮忙?!
'Opens the folder to location to select txt file
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
Workbooks.OpenText fileName:=fileToOpen, _
DataType:=xlDelimited, Tab:=True
End If
'Creates the file name based on txt file name
fileName = Mid(fileToOpen, InStrRev(fileToOpen, "\") + 1)
'Creates the sheet name based on the active txt file
sheetName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
'Rename the original text file
ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment
Limited\" & "DNU_" & fileName & ".txt")
【问题讨论】:
-
您的问题/错误是什么?出现运行时错误?或
fileName或sheetName的值错误? -
分配
sheetName时,您不应该引用fileName而不是活动工作簿名称吗?在 SaveAs 行中,删除& ".txt"。 -
没有错误,但是当过程完成时,我的文件名中实际上有.txt字样,它也出现在工作表名称中。例如,它显示为 Test.txt.txt,因为文件格式是 .txt。我需要它来仅以 .txt 作为文件格式读取测试,而不是组成任何名称。
-
由于您试图打开一个文本文件,其中只有一张工作表,您可以使用
sheetName = ActiveWorkbook.Worksheets(1)来获取工作表的名称 -
@SJR 谢谢你,它工作得很好。有工作表名称的原因是我没有愚蠢地包含的下一行代码是“ActiveWorkbook.SaveAs ("S:\MERIT OUTPUTS FOLDER\MSI Recruitment Limited\BACS File Original\" & _ fileName & ". CSV"), 文件格式:=xlCSV'