Я использую и XLT, который содержит макросы, он создает XLS открытым и сохранить его в выбранном каталоге, проблема в том, что сохраненный файл содержит те же макросы, что и в XLT. Есть ли шанс изменить проц, чтобы сделать его сохранить сгенерированный файл без макросов?
с наилучшими пожеланиями,
Thomas
Если ваш вопрос касается того, как автоматически запускать макрос только тогда, когда он вызывается из XLT, а не когда он вызывается из сгенерированного XLS, то, возможно, это может помочь
Private Sub Workbook_Open()
If ThisWorkbook.Path = "" Then
Call myMacro
End If
End Sub
myMacro будет только вызывается, если открытый файл - XLT, а не XLS.
Есть несколько способов сделать это. Если вам нужны только рабочие листы и none кода, то, вероятно, самый простой способ - просто скопировать рабочие листы в новую книгу, а затем сохранить это:
Private Sub workbook_open()
Dim wb As Workbook
Dim saveName As String
ThisWorkbook.Sheets.Copy
Set wb = ActiveWorkbook
saveName = Application.GetSaveAsFilename(fileFilter:="Excel Workbook (*.xls), *.xls")
If Not saveName = "False" Then
wb.SaveAs saveName
End If
End Sub
Если какой-то код все еще требуется в XLS тогда вам нужно будет напрямую манипулировать средой VB, чтобы удалить ненужные части. Это немного сложнее и имеет некоторые важные ограничения / предостережения , но похоже, что более простой метод, проиллюстрированный выше, может удовлетворить ваши потребности в любом случае.