![](/img/trans.png)
[英]How do I automatically take the most recently modified .txt file in a folder, convert it to .xlsx, and overwrite an existing .xlsx file?
[英]How can I convert from a .txt file to a .xlsx?
我正在尝试将超过 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
当代码完成运行并且我 go 打开 .xlsx 工作簿时,我收到一条错误消息,指出 Excel 无法打开文件,因为文件格式或文件扩展名无效。 验证文件没有损坏并且文件扩展名与文件格式匹配。
我不知道在这里做什么,因为我知道当我手动将 one.txt 文件工作簿更改为 a.xlsx 文件类型时这会起作用。 我什至记录了宏,它或多或少与我在这里的代码相匹配。 (在一次尝试中,我什至完全复制了录制的宏,但它仍然不允许我在完成后打开 .xlsx 文件。)任何帮助将不胜感激。
你永远不会引用你保存的文件格式。你想使用 xlOpenXMLWorkbook = 51
看起来您将 object 文件传递给 open 的 Filename 参数。 我会像您在构建 output 名称时一样使用file.Name
。
使用 With 块将优雅地为您处理工作簿 object。 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.