【发布时间】:2021-02-23 12:57:24
【问题描述】:
我有从另一个系统自动导出给我的 txt 文件(我无法更改这个系统)。当我尝试使用以下代码将这些 txt 文件转换为 excel 时(我手动创建了一个子文件夹 xlsx):
Sub all()
Dim sourcepath As String
Dim sDir As String
Dim newpath As String
sourcepath = "C:\Users\PC\Desktop\Test\"
newpath = sourcepath & "xlsx\"
'make sure subfolder xlsx was created before
sDir = Dir$(sourcepath & "*.txt", vbNormal)
Do Until Len(sDir) = 0
Workbooks.Open (sourcepath & sDir)
With ActiveWorkbook
.SaveAs Filename:=Replace(Left(.FullName, InStrRev(.FullName, ".")), sourcepath, newpath) & "xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
.Close
End With
sDir = Dir$
Loop
End Sub
它确实有效,但是某些特殊字符,如 ä、ö 和 Ü 等,无法正确显示。 IE。当我稍后打开 xlsx 文件时,我可以看到这些文件已被 ä 等替换。我可以使用解决方法,现在开始替换这些,但是我想改进我的 txt 到 xlsx 代码。根据这个post 或这个one 应该可以使用ADODB.Stream。但是,我不知道如何在我的代码(循环)中实现它以使其在我的情况下在这里工作?如果有另一种方法而不是 ADOB.Stream 我也很好。我不需要使用 ADOB.Stream。
【问题讨论】:
-
试试
Workbooks.OpenText和Origin:=65001。 65001 是 UTF8 的代码页。 -
有什么理由两次发布相同的问题?另一个问题中提出的解决方案也应该适用于这个问题,并带有相应的更新。
-
原因是确实这是关于 txt 而不是 csv 的问题。这就是我将这两个问题分开的原因。我目前没有 csv 的解决方案,这就是为什么我想用 txt 尝试它,因为它似乎是更简单的方法,但我遇到了特殊字符的问题。
标签: excel vba import filesystemobject txt