如何解决使用 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 举报,一经查实,本站将立刻删除。