Сохранить как в CSV в Excel для Mac 2016 - PullRequest
0 голосов
/ 22 мая 2018

Я опытный разработчик VBA, но у меня недостаточно опыта в Mac, чтобы завершить свой очень простой проект.Я хочу экспортировать листы в CSV и сохранить их в том же каталоге, где хранится рабочая книга.

Я уже создал новую рабочую книгу (ActiveWorkbook) с данными, скопированными из основной рабочей книги, и полностью обработанной частью кода Windows.Но в Mac я не могу заставить эту часть работать, в результате не было создано ни одного файла:

ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _
    FileFormat:=xlCSV, CreateBackup:=False 

Я прочитал несколько источников и обнаружил, что Excel для Mac 2016 требует вызова диалога GetSaveAsFilename с исходным именем файла с подтверждением вручную, чтобы сделатьпоэтому я изменил свой код следующим образом:

#If Mac Then
    s_fname = Application.GetSaveAsFilename(InitialFileName:= _
        ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv")                                          

    If s_fname <> False Then
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs s_fname, 6                                                     
        Application.DisplayAlerts = True
    End If
#Else
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
    ThisWorkbook.Path & Application.PathSeparator & sheetname & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False                                     
    Application.DisplayAlerts = True
#End If

Макрос создает файлы с данными, но они сохраняются в XLSX, а не в CSV: No CSV but XLSX created, а в диалоговом окне по умолчанию используется формат xlsx: SaveAs Filetype default

Когда я пытаюсь установить FileFilter, у меня больше нет сохраненных файлов (я предполагаю, что Mac не поддерживает этот атрибут).Когда я пытаюсь выполнить замену:

s_fname=replace(s_fname,".xslx",".csv") 

У меня все еще есть файлы .xlsx в папке.

Можете ли вы предложить, пожалуйста, какое значение GetSaveAsFilename FileFilter я должен установить в коде, чтобы заставить CSVсохранить вместо XLSX?Или другое VBA решение для этого (изменение формата файла, переименование после сохранения и т. Д.).

Спасибо, Вячеслав

1 Ответ

0 голосов
/ 22 мая 2018

Привет, попробуйте изменить первую часть, как эта:

If Mac Then
    OutputFile = ThisWorkbook.Path & Replace(ActiveWorkbook.Name, ".xls", "-") & ".csv"                                          

    If OutputFile <> False Then
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=OutputFile, FileFormat:=xlCSV, CreateBackup:=False                                                     
        Application.DisplayAlerts = True
    End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...