2015-07-24 1 views
3

My sub открывает файл .xlsm в новом экземпляре Excel, вносит изменения в файл и сохраняет изменения.Workbook.save - «следующие функции не могут быть сохранены в книгах без макросов ...»

Однако, несмотря на то, что файл, который открыт в .xlsm, на workbook.save я получаю предупредительное сообщение «следующие функции не могут быть сохранены в макро-бесплатных книг ...»

Это Безразлично» Для меня смысл, потому что файл - .xlsm. Есть идеи?

Редактировать: Я считаю, что я нашел источник проблемы. Хотя переменная «путь» содержит C: \ file.xlsm, wkb.path пуст. (см. ниже раздел Debug.print). Почему wkb.path пуст?

Set XL = New Excel.Application 
    XL.Visible = False 

    For Each Path In XLSMPaths 

     Set wkb = XL.Workbooks.Add(Path) 

     Debug.Print Path  ' "C:\file.xlsm" 
     Debug.Print wkb.path ' "" 
     Debug.print wkb.name ' "file"  

     wkb.Save '<- alert message "The following features cannot be saved in macro-free workbooks..." 

    Next Path 
+0

wkb.path будет пуст, если вы еще не сохранили он, у него нет пути –

ответ

5

По умолчанию .save метод сохраняет файл как .xls или формата XLSX (в зависимости от версии Excel), вам нужно, чтобы заставить это с .saveas

wkb.SaveAs Filename:=MyNewPathFilename, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

очевидно изменения переменную «MyNewPathFilename» на все, что вы хотите сохранить файл, вероятно, хотите взять Путь и проверить, заканчивается ли она .xlsm, а затем передать ее в эту переменную