使用 VBA 将 XSLX 转换为 CSV

brianvu1892

首先,我对 VBA 非常业余,所以我需要你的帮助!

我使用下面的代码转换.xlsx.csv但不知何故该字符不好看。英语还可以,但越南字符不容易看到。

例如,复制此文本“您今天如何评价我们的餐厅?” 到 xlsx 文件并使用下面的代码转换为 csv。然后字符显示为“Ba?n ?a?nh gia?ve?ha?ha?ng cu?a chu?ng to?i ho?m now like?the?na?o?”

任何人都可以帮我解决这个问题!先感谢您

Dim fso: set fso = CreateObject("Scripting.FileSystemObject") ' directory in which this script is currently running CurrentDirectory = fso.GetAbsolutePathName(".")

Set folder = fso.GetFolder(CurrentDirectory)

For each file In folder.Files

If fso.GetExtensionName(file) = "xlsx" Then

    pathOut = fso.BuildPath(CurrentDirectory, fso.GetBaseName(file)+".csv")

    Dim oExcel
    Set oExcel = CreateObject("Excel.Application")
    Dim oBook
    Set oBook = oExcel.Workbooks.Open(file)
    oBook.SaveAs pathOut, 6
    oBook.Close False
    oExcel.Quit
End If Next
李戴

您必须使用编码 UTF-8。adostream 辅助这个功能。

Sub SaveXlsToCsvFiles()
    Dim FileName As String
    Dim Ws As Worksheet, Wb As Workbook
    Dim rngDB As Range
    Dim r As Long, c As Long
    Dim pathOut As String
    Dim File As Object, folder As Object

Dim fso: Set fso = CreateObject("Scripting.FileSystemObject") ' directory in which this script is currently running CurrentDirectory = fso.GetAbsolutePathName(".")

'Set folder = fso.GetFolder(CurrentDirectory)
Set folder = fso.GetFolder(ThisWorkbook.Path)
For Each File In folder.Files

    If fso.GetExtensionName(File) = "xlsx" Then
        If File.Name <> ThisWorkbook.Name Then
            pathOut = fso.BuildPath(CurrentDirectory, fso.GetBaseName(File) + ".csv")
            With File
                Set Wb = Workbooks.Open(.ParentFolder & "\" & .Name)
                Set Ws = Wb.Sheets(1)
                With Ws
                    r = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
                    c = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
                    Set rngDB = .Range("a1", .Cells(r, c))
                End With
                TransToCSV pathOut, rngDB
                Wb.Close (0)
            End With
        End If
    End If
Next
Set fso = Nothing
    MsgBox ("Files Saved Successfully")
End Sub
Sub TransToCSV(myfile As String, rng As Range)

    Dim vDB, vR() As String, vTxt()
    Dim i As Long, n As Long, j As Integer
    Dim objStream
    Dim strTxt As String

    Set objStream = CreateObject("ADODB.Stream")
    vDB = rng
    For i = 1 To UBound(vDB, 1)
        n = n + 1
        ReDim vR(1 To UBound(vDB, 2))
        For j = 1 To UBound(vDB, 2)
            vR(j) = vDB(i, j)
        Next j
        ReDim Preserve vTxt(1 To n)
        vTxt(n) = Join(vR, ",")
    Next i
    strTxt = Join(vTxt, vbCrLf)
    With objStream
        .Charset = "utf-8"
        .Open
        .WriteText strTxt
        .SaveToFile myfile, 2
        .Close
    End With
    Set objStream = Nothing

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Access VBA将多个csv合并为单个xslx

来自分类Dev

如何使用excel vba将excel文件转换为CSV文件(以竖线分隔)

来自分类Dev

使用VBA将整数转换为文本

来自分类Dev

使用JavaScriptSerializer将CSV转换为JSON

来自分类Dev

使用Spark将CSV转换为ORC

来自分类Dev

使用PHP将CSV转换为JSON

来自分类Dev

使用Unicode将CSV转换为YAML?

来自分类Dev

使用xsltproc将XML转换为CSV

来自分类Dev

使用js将json转换为csv

来自分类Dev

使用Notepad ++将CSV转换为SQL

来自分类Dev

使用xsltproc将XMLS转换为CSV

来自分类Dev

使用Java将XML转换为CSV

来自分类Dev

使用jq将JSON转换为CSV

来自分类Dev

使用 Pandas 将 JSON 转换为 CSV

来自分类Dev

使用 jq 将 JSON 转换为 CSV

来自分类Dev

使用 jackson 将 csv 转换为 json

来自分类Dev

使用 python 将 JSON 转换为 CSV

来自分类Dev

使用 Python 将 json 转换为 csv

来自分类Dev

使用 R 将 JSON 转换为 CSV

来自分类Dev

使用PowerShell将CSV转换为JSON和将JSON转换为CSV

来自分类Dev

使用m子中的dataweave将CSV转换为CSV

来自分类Dev

使用VBA将xml文件转换为xlsx文件

来自分类Dev

使用VBA自动将多个xml转换为Excel

来自分类Dev

使用VBA将TXT批量转换为XLS

来自分类Dev

使用Excel VBA if语句将值转换为数字

来自分类Dev

使用VBA将多个图像转换为excel

来自分类Dev

使用 VBA 将多个 Word 文档转换为 HTML 文件

来自分类Dev

使用StringBuilder将List <string>转换为csv

来自分类Dev

使用Python将CSV转换为JSON(以特定格式)