#excel #vba
Вопрос:
У меня работает весь мой код, но это сохраняет текст в ANSI, хотел бы сохранить текст в формате UTF-8, не могли бы вы мне помочь с этим?
Option Explicit
Sub SaveWorkSheetAsCSV()
ActiveSheet.Buttons.Delete
Dim FolderPath As String
FolderPath = "C:Users" amp; Environ("USERNAME") amp; "Test"
Dim FileName As String: FileName = Format(Now, "yyyymmdd-hh.mm ") amp; " Test"
Dim sws As Worksheet: Set sws = ThisWorkbook.Worksheets(4)
Application.ScreenUpdating = False
sws.Copy
Dim dwb As Workbook: Set dwb = ActiveWorkbook
Application.DisplayAlerts = False
dwb.SaveAs FolderPath amp; "" amp; FileName amp; ".txt", xlCSV, Local:=True
Application.DisplayAlerts = True
dwb.Close SaveChanges:=False
Application.ScreenUpdating = True
ThisWorkbook.FollowHyperlink FolderPath
End Sub
Комментарии:
1. Проверьте документацию для рабочей книги. Сохраните, особенно аргумент FileFormat. docs.microsoft.com/en-us/office/vba/api/excel.xlfileformat
2. Спасибо, я уже проверил это, к сожалению, ничего для txt как UTF-8.
Ответ №1:
У вас есть пара вариантов, чтобы изменить свой SaveAs
Попробуйте любой из этих»
'My best guess that will work
dwb.SaveAs FolderPath amp; "" amp; FileName, xlCurrentPlatformText, Local:=True
'Alternative text
dwb.SaveAs FolderPath amp; "" amp; FileName, xlUnicodeText, Local:=True
'CSV approach
dwb.SaveAs FolderPath amp; "" amp; FileName, xlCSVUTF8, Local:=True
Комментарии:
1. Спасибо, я разберусь с этим!
2. Я должен проверить это еще раз, xlCSVUTF8, возвращается к ошибке.
3. Это будет связано с файлом. Не код. Довольно стандартная процедура.
4. Я собираюсь проверить это сегодня!
5. Кажется, что xlCSVUTF8 работает, но он сохраняется как UTF-8 с BOM, есть ли возможность сохранить это без части спецификации?