Программно сохранить надстройку Excel - PullRequest
5 голосов
/ 22 декабря 2010

У меня иногда обновляется рабочий лист пользователями, который используется для создания надстройки (.XLAM). Надстройка находится на общем сетевом ресурсе, и пользователи ссылаются на него. Я хочу, чтобы пользователи могли легко обновить эту надстройку (убедитесь, что она помечена как доступная только для чтения)

Я видел статью Кена Пульса здесь о развертывании надстроек Excel, однако используемый им метод .SaveCopyAs, похоже, не в состоянии принять тип файла.

Метод .SaveAs делает, однако, когда я попробовал это, я получил сообщение о том, что формат файла или расширение было недопустимым, я пробовал оба с .XLAM и .XLA как ниже.

DeployPath = "C:\Menu.xlam"
.SaveAs Filename:=DeployPath, ReadOnlyRecommended:=True, FileFormat:=xlOpenXMLAddIn

Любая помощь в этом отношении будет принята с благодарностью.

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Я думаю, что вам нужно использовать (Excel 2003 и более ранние версии)

ThisWorkbook.IsAddin = True
ThisWorkbook.SaveAs "fredyy", xlAddIn

Для Excel 2007+ используйте

ThisWorkbook.SaveAs "fredyy", xlOpenXMLAddIn
3 голосов
/ 27 декабря 2013

Это решение, которое сработало для меня:

Dim strRawName As String
strRawName = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
ThisWorkbook.IsAddin = True
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strRawName & ".xlam", FileFormat:=xlOpenXMLAddIn
...