我正在尝试将200多个.txt文件转换为.xlsx文件。这是我正在使用的代码:
Dim wb As Excel.Workbook
Dim FSO As New FileSystemObject
Dim obj_folder As Object
Dim file As Object
Dim path As String
Dim destination As String
Dim file_name As String
path = "C:\Users\ABCD\Desktop\Attributes Files\"
destination = "C:\Users\ABCD\Desktop\Attributes xlx\"
Set FSO = CreateObject("Scripting.filesystemobject")
Set obj_folder = FSO.GetFolder(path)
For Each file In obj_folder.Files
file_name = Left(file.Name, (InStrRev(file.Name, ".", -1, vbTextCompare) - 1))
Call Workbooks.OpenText(Filename:=file, DataType:=xlDelimited, Tab:=True)
Set wb = ActiveWorkbook
wb.SaveAs Filename:=destination & file_name & ".xlsx"
wb.Close savechanges:=False
Next file
当代码运行完毕并打开.xlsx工作簿时,我收到一条错误消息,指出Excel无法打开文件,因为文件格式或文件扩展名无效。确认文件未损坏,并且文件扩展名与文件格式匹配。
我不确定该怎么做,因为我知道当我手动将一个.txt文件工作簿更改为.xlsx文件类型时,此方法有效。我什至记录了该宏,并且该宏或多或少与我在这里的代码相匹配。 (在一次尝试中,我什至精确地复制了录制的宏,并且仍然无法在完成后打开.xlsx文件。)任何帮助将不胜感激。
答案 0 :(得分:1)
您永远不会引用保存的文件格式。您要使用xlOpenXMLWorkbook = 51
似乎您将目标文件传递给了open的Filename参数。我将像构建输出名称时一样使用file.Name
。
使用With块将为您正常处理工作簿对象。 FSO.GetBaseName将为您删除文件名的扩展名。
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.filesystemobject")
Dim path As String
path = "C:\Users\ABCD\Desktop\Attributes Files\"
Dim destination As String
destination = "C:\Users\ABCD\Desktop\Attributes xlx\"
Dim file As Object
For Each file In FSO.GetFolder(path).Files
Dim file_name As String
file_name = FSO.GetBaseName(file.Name)
With Workbooks.OpenText(Filename:=file.Name, DataType:=xlDelimited, Tab:=True)
.SaveAs Filename:=destination & file_name & ".xlsx", FileFormat:=51
.Close savechanges:=False
End With
Next file