微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 VBA 和 sep= 的分号分隔的 UTF8 CSV Excel;

如何解决使用 VBA 和 sep= 的分号分隔的 UTF8 CSV Excel;

上下文: 我有一个 csv UTF8 文件,它是从 Excel 工作簿中的值生成的。分隔符必须是分号,API 才能获取文件并处理数据。这必须自动完成,因为这个宏会被很多人使用。

问题: 我当前的设置是使用逗号分隔符保存 csv UTF8 文件,由于 API 的原因,这对我不起作用。

解决方案: 我发现通过在单元格 A1 中添加“sep=;”我能够绕过 excel 中的当前设置,它将使用分号而不是逗号。

问题2: 当我直接在宏中保存文件时,sep=;不管用。如果用户点击 Excel 中的保存图标,分隔符将变为分号而不是逗号。

我想了解为什么直接在宏中保存文件不会使我的分隔符切换为分号,而手动保存却可以。

谢谢!

解决方法

这是我的团队成员找到的解决方案。

Sub SaveAsCSV(ByRef cells As Range,ByVal filename As String,Optional ByVal separator As String = ";")


Dim csv As String
Dim r As range,c As range
For Each r In cells.Rows
    For Each c In r.Columns
         If Application.IsText(c) Then
            csv = csv & Chr(34) & c & Chr(34)
         Else
            csv = csv & c
        End If
        csv = csv & separator
    Next
    csv = Left(csv,Len(csv) - Len(separator))
    csv = csv & Chr(13)
Next
    
Dim file As Object
Set file = CreateObject("adodb.stream")
file.Type = 2
file.Mode = 3
file.Charset = "UTF-8"
file.Open
file.WriteText (csv)
file.SaveToFile (filename)
file.Close
End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。