VBA将多个Unicode文本文件转换为常规csv。这些文本文件具有csv扩展名

时间:2018-11-28 16:57:51

标签: excel vba

我有几个小时来尝试在此处发布的代码。它们成功打开了文件,但是在保存文件时,它们仍然是Unicode文本格式,Python熊猫csv_reader不会读取它们。这是我的最新最大尝试。我的文件位于子文件夹“ QCfiles”中:

Sub LoopExample()

Dim MyFolder As String, MyFile As String

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    MyFolder = .SelectedItems(1)
    Err.Clear
End With

Application.ScreenUpdating = False

MyFile = Dir(MyFolder & "\", vbReadOnly)

Do While MyFile <> ""
    Workbooks.Open FileName:=MyFolder & "\" & MyFile, UpdateLinks:=False
    MsgBox Cells(1, 1)
    ActiveWorkbook.SaveAs FileName:=MyFile, FileFormat:=xlCSV
    Workbooks(MyFile).Close savechanges:=True
    MyFile = Dir
Loop

Application.ScreenUpdating = True

End Sub

2 个答案:

答案 0 :(得分:0)

在修改CSV(通过VBA)之前,请尝试将参数传递给encoding的{​​{1}}参数。

据我了解,pandas.read_csv()默认为您的系统设置(如果您的区域设置是英语的某种变体,则可能为encoding)。

要覆盖此隐式行为,您可以尝试传递'cp1252'(或者可能需要encoding='utf-8'),然后传递encoding='utf-8-bom'来解码/使用Unicode字符。

假设您已将pandas导入命名空间pandas下,并且文件位于pd(在Windows上):

C:\some_folder\ok.csv

我认为值得尝试,因为这可能是一种快速解决方案。

(其他选择可能是导入一些Python库,该库可以尝试推断文件的编码,然后使用该特定的编码,但这显然是更多的工作。

此外,当强制将Unicode强制转换为ASCII时,您可能会丢失信息/字节,具体取决于是否存在任何非ASCII字符。

答案 1 :(得分:0)

“这在R中有效”。我现在将切换回Python / Pandas进行进一步的工作。 R擅长读取混乱的数据”

install.packages('data.table') 库(data.table)

文件名<-Sys.glob(“ C:/ Users / fkean / TOS_csv / QCfiles / ”)

对于(文件名中的f){

样本<-read_csv(f,skip = 2)   write_csv(sample,f,append = FALSE)

}