Excel: Сохранить как CSV через VBA и вручную приводит к другому файлу
Вопрос
Мне нужно сохранить несколько XLSM-файлов в качестве CSV, чтобы импортировать их в другие программы (например, r и т. Д.). Ну, я написал необходимые процедуры импорта во всех других программах, и они очень хорошо работают с помощью случая 1:
Мои вопросы: 1. Почему есть никакая разница? 2. Как я могу программно достичь случая 2 от VBA? Или это невозможно?
Если 2 невозможно, я должен переписать свои процедуры ввода импорта, чтобы обрабатывать «нормальный» файл CSV ... не очень сложно, но еще много работы, и мне действительно интересно, почему даже это разница .. < / P >.
Решение
У меня есть 3 пример файлов XLSM в C:\stack\folder1
, как на фото ниже:
Каждый файл имеет один лист данных, который мы превратимся в CSV:
Я уверен, что ваша рутина гораздо сложнее, но для проверки вывода CSV я просто собираюсь закрутить файлы и сохранить каждый как xlCSV
:
Option Explicit
Sub TestCSVOutput()
Dim DataBook As Workbook
Dim DataSheet As Worksheet
Dim FilePaths(3) As String
Dim FileIdx As Long
'set up file paths for test
FilePaths(1) = "C:\stack\folder1\test_file_01.xlsm"
FilePaths(2) = "C:\stack\folder1\test_file_02.xlsm"
FilePaths(3) = "C:\stack\folder1\test_file_03.xlsm"
'loop through array and save each file as a CSV
Application.DisplayAlerts = False
For FileIdx = 1 To UBound(FilePaths)
Set DataBook = Workbooks.Open(FilePaths(FileIdx))
Set DataSheet = DataBook.ActiveSheet
DataBook.SaveAs FileFormat:=xlCSV '<~~ the save step
DataBook.Close
Next FileIdx
Application.DisplayAlerts = True
End Sub
.
Как только скрипт завершится, я в конечном итоге с тремя файлами CSV:
Каждый файл - запятее, если они открываются в текстовом редакторе: