相关文章推荐
坏坏的茴香  ·  Power Bi ...·  2 年前    · 
温暖的书包  ·  springboot ...·  2 年前    · 
首发于 傲天百科
Wind数据库Excel文件特殊字符批量处理-基于VBA

Wind数据库Excel文件特殊字符批量处理-基于VBA

从wind数据库下载的Excel文件,通常会包含特殊字符,Python在导入这类Excel文件时通常会报错。那么如何快速高效处理这一问题呢?我的思路是使用VBA (Visual Basic for Applications)

例如,我们将待处理数据放到某文件夹下,文件夹路径用fPath表示;处理后的文件放到另一文件夹下,文件夹路径用sPath表示。除了需要处理的Excel文件,路径fPath还可能包含其他文件,比如PDF文件等,这需要我们获取文件的扩展名,当文件的扩展名为".xls"或".xlsx"时才执行后续操作。

wind数据库下载的Excel文件可能包含字符"--",需要将其清空。wind数据库下载的Excel文件末尾可能包含字符"Data Source:Wind",需要清空内容。将处理后的Excel文件以原文件名保存,以UTF8编码格式保存为csv文件。完整的VBA代码如下所示:

Sub SaveToCSVs()
    Dim fDir As String
    Dim wB As Workbook
    Dim wS As Worksheet
    Dim fPath As String
    Dim sPath As String
    fPath = "..."    '待处理数据文件夹路径'
    sPath = "..."    '处理后数据保存路径'
    fDir = Dir(fPath)
    Do While (fDir <> "")
        If Right(fDir, 4) = ".xls" Or Right(fDir, 5) = ".xlsx" Then
            On Error Resume Next
            Set wB = Workbooks.Open(fPath & fDir)
            'MsgBox (wB.Name)
            For Each wS In wB.Sheets
                Name = Split(wB.Name, ".")(0)
                wS.Cells.Replace What:="--", Replacement:="", LookAt:=xlPart, SearchOrder _
                    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
                wS.Cells.Replace What:="Data Source:Wind", Replacement:="", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False
                wS.SaveAs sPath & Name & ".csv", xlCSVUTF8
            Next wS
            wB.Close False
            Set wB = Nothing
        End If
        fDir = Dir