【发布时间】:2017-11-16 00:39:28
【问题描述】:
我在工作表上有数据 - 基本上是足球桌。
我想将工作表导出为 UTF8 编码的 csv 文件。
我在另一张纸上有相同的代码 - 并且确实正确编码为 UTF8。
(我去 Notepad++ 并检查编码 - 它总是 ANSI)好的是 UTF8。
为什么一个宏可以正常工作,而另一个不能?
我在工作表上的代码是:
Private Sub btHTMLUK_Click()
Application.DisplayAlerts = False
On Error Resume Next
Kill "C:\news\work\eurofootballtables.csv"
On Error GoTo 0
Set NewBook = Workbooks.Add
ThisWorkbook.Worksheets("eurofootballtables").Range("A1:I130").Copy
NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteValues)
NewBook.SaveAs Filename:="C:\News\work\eurofootballtables.csv",FileFormat _
:=xlCSVMSDOS, CreateBackup:=False
'even tried this:
ActiveWorkbook.WebOptions.Encoding = msoEncodingUTF8
Workbooks("eurofootballtables.csv").Close
End Sub
【问题讨论】:
-
不确定它是否相关,但您肯定想为 NewBook 而不是 activeworkbook 更改 weboptions.encoding 并且您希望在保存之前而不是之后进行。
-
I go to Notepad++ and check encoding- 对于前 128 个代码点,UTF-8 与 ASCII 无法区分。如果你的文件只包含这些,Notepad++ 将无法知道它是 ASCII 还是 UTF-8。