Я опытный разработчик 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: , а в диалоговом окне по умолчанию используется формат xlsx:
Когда я пытаюсь установить FileFilter, у меня больше нет сохраненных файлов (я предполагаю, что Mac не поддерживает этот атрибут).Когда я пытаюсь выполнить замену:
s_fname=replace(s_fname,".xslx",".csv")
У меня все еще есть файлы .xlsx в папке.
Можете ли вы предложить, пожалуйста, какое значение GetSaveAsFilename FileFilter я должен установить в коде, чтобы заставить CSVсохранить вместо XLSX?Или другое VBA решение для этого (изменение формата файла, переименование после сохранения и т. Д.).
Спасибо, Вячеслав