csv из ошибки excel, но другие типы данных работают правильно?

Хорошо, я пытаюсь написать макрос, который сохраняет книгу Excel в файл csv. Я пробовал много разных решений, но у меня все еще есть проблемы с правильной печатью значений. когда я открываю файл, который он создает. Остальной код, который я пропустил, все, что он делает, это берет исходную электронную таблицу и копирует содержимое во временный лист, чтобы я мог взять несколько листов из одного и того же WB и распечатать их в один и тот же файл csv. у него также есть модуль, который очистит все форматирование и содержимое этого временного файла. Я запустил код, чтобы просто распечатать его в новой электронной таблице Excel, и он работал нормально, просто не печатал в csv, не знаю, почему

вывод выглядит так:

K     ! bîh^     [Content_Types].xml ¢(
[… skip a bunch of binary lines …]
KÆ8k¡~¥-ÙÔäá ûÜ

Мой код выглядит так:

Sub SaveFile()
Dim NewName As String
Dim nm As Name
Dim ws As Worksheet

If MsgBox("Copy specific sheets to a new workbook" & vbCr & _
"New sheets will be pasted as values, named ranges removed" _
, vbYesNo, "NewCopy") = vbNo Then Exit Sub

With Application
    .ScreenUpdating = False

     '       Copy specific sheets
     '       *SET THE SHEET NAMES TO COPY BELOW*
     '       Array("Sheet Name", "Another sheet name", "And Another"))
     '       Sheet names go inside quotes, seperated by commas
    On Error GoTo ErrCatcher
    Sheets(Array("Raw Data Copy")).copy
    On Error GoTo 0

     '       Paste sheets as values
     '       Remove External Links, Hperlinks and hard-code formulas
     '       Make sure A1 is selected on all sheets
    For Each ws In ActiveWorkbook.Worksheets
        ws.Cells.copy
        ws.[A1].PasteSpecial Paste:=xlValues
        ws.Cells.Hyperlinks.Delete
        Application.CutCopyMode = False
        Cells(1, 1).Select
        ws.Activate
    Next ws
    Cells(1, 1).Select

     '       Remove named ranges
    For Each nm In ActiveWorkbook.Names
        nm.Delete
    Next nm

     '       Input box to name new file
    NewName = "test"

     '       Save it with the NewName and in the same directory as original
    ActiveWorkbook.SaveCopyAs ThisWorkbook.path & "\" & NewName & ".csv"
    ActiveWorkbook.Close SaveChanges:=False

    .ScreenUpdating = True
End With
Exit Sub

ErrCatcher:
MsgBox "Specified sheets do not exist within this workbook"
End Sub

person user3753693    schedule 18.06.2014    source источник


Ответы (1)


SaveCopyAs сохраняет книгу Excel только в формате Excel. Даже если вы добавите .csv к имени файла, файл все равно будет в формате .xls.

Метод Workbook SaveAs позволяет указать тип файла, в который вы хотите сохранить.

Однако, если вы используете метод Сохранить как, он изменяет имя вашего текущего файла.

В этом более раннем вопросе о переполнении стека есть несколько вариантов использования метода «Сохранить как» без изменения имени файла, над которым вы работаете.

Почему VBA ActiveWorkbook.SaveAs изменяет открытую электронную таблицу? есть некоторые комментарии о том, как правильно использовать метод SaveAs и не изменять имя вашего текущего файла в процессе.

person S. Miller    schedule 18.06.2014
comment
Если я использую метод SaveAs, могу ли я сохранить местоположение на сервере etl или оно должно быть локальным? - person user3753693; 20.06.2014