繁体   English   中英

如何从 a.txt 文件转换为 a.xlsx?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM