Збережіть Excel Sheet як CSV у UTF-8 за допомогою VBA


0

Я працюю над наступним макросом у excel, який перебирає всі робочі таблиці в робочій книжці і зберігає кожен у свій .csv файл. Проблема полягає в тому, що мені це потрібно для збереження у форматі .csv, закодованого UTF-8. Я читав, що кодування Excel за замовчуванням для .csv - це ANSI, яке для мене не працюватиме, оскільки в них є деякі файли зі спеціальними символами. Хтось знає, як я можу з цим піти?

Макрос:

Public Sub ExportSheetsToCSV()

Dim wsExport As Worksheet
Dim wbkExport As Workbook

For Each wsExport In Worksheets
wsExport.Select
nm = wsExport.Name
If Not IsActiveSheetEmpty() Then
    ActiveSheet.SaveAs fileName:="H:\CSV_Split_Exports\" & nm, FileFormat:=xlCSV
    Application.DisplayAlerts = True
End If

Next wsExport

End Sub

Відповіді:


0

"Простий спосіб" - зберегти як "Текст Unicode". Це буде UTF-16, формат з обмеженими вкладками , а не з комою.

Більшість процесів імпорту програмного забезпечення дозволяє вказати роздільник під час імпорту даних, але якщо ваша конкретна програма цього не робить, ви можете після обробки файлу знайти + замінити, щоб змінити вкладку на кому.


Чи є "важкий шлях"? Програмне забезпечення для імпорту, яке я використовую, не дозволяє мені вибрати свій роздільник, і ціль, якою я писав цей макрос, - уникнути таких речей, як індивідуальна післяобробка. Я не проти намагатися реалізувати більш складний макрос, якщо він потрапить мене туди, куди мені потрібно піти.
Джейсон Блокловів

ви можете після обробки його експортувати файл у VBA: відкрийте його, прочитайте рядки, обробіть вкладки, запишіть у новий файл. Потрібно використовувати безпечні функції рядка unicode.
Йорік

О, гаразд. Я розумію, що ти кажеш. Чи є якийсь спосіб, щоб ви могли мені допомогти з VBA? Я просто навчусь цим користуватися, і мені здається, що це трохи переживає мою голову.
Jason Blocklove

Вам потрібно відкрити два файли, один для читання, один для запису. Потім ви читаєте рядок до рядкової змінної, використовуєте replace()змінну, а потім записуєте у другий файл. Ви б використовували щось на зразок "циклу файлів, а не в кінці". Перевірте документацію VBA також, але ось VB Script версії що - то без циклу: stackoverflow.com/questions/1410334 / ...
Йорик

Ви знайдете безліч простих прикладів текстових файлів введення / виводу, деякі навіть на MSDN. Це не дуже складно. Як тільки ви отримаєте щось, що не працює (!), Якщо ви застрягли, перевірте stackoverflow. Найкращий спосіб - зберегти прикладний файл, а потім грати з ним як функцію з двома параметрами (infile, outfile), після цього, як тільки ви це зробите, вставте виклик функції в цикл, який ви розмістили вище, безпосередньо перед вашимNext wsExport
Йорік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.