Можно ли указать конкретный лист из шаблона? Я пробовал Sheets.Add, но, кажется, импортирует все листы по указанному пути. - Virtual Underscore
Это основная проблема при экспорте каждого листа в рабочей книге в файл шаблона WorkSheet. При выполнении шаблона «Сохранить как» рабочий лист должен быть единственным рабочим листом в рабочей книге. Если в Рабочей книге существует более одного Рабочего листа, вы будете экспортировать шаблон Рабочей книги.
Вы можете скопировать следующий код VBA в файл кода ThisWorkbook Рабочей книги, из которой вы хотите экспортировать шаблоны. Убедитесь, что вы изменили строку templateFolder = "F:\Temp\Templates"
в коде. Запустите его, и он будет экспортировать каждый рабочий лист в рабочую книгу.
Sub ExportWorksheetTemplates()
Excel.Application.DisplayAlerts = False
Excel.Application.ScreenUpdating = False
Dim templateFolder As String
templateFolder = "F:\Temp\Templates" ' set this to an existing folder on you system
Dim tmpWb As Excel.Workbook
Dim old_numsheets As Integer
old_numsheets = Excel.Application.SheetsInNewWorkbook
Excel.Application.SheetsInNewWorkbook = 1
Dim ws As Excel.Worksheet
Dim newWBFirstSheet As Excel.Worksheet
Dim templatePath As String
On Error GoTo Finalize
For Each ws In ThisWorkbook.Worksheets
Set tmpWb = Excel.Application.Workbooks.Add()
Set newWBFirstSheet = tmpWb.Worksheets(1)
newWBFirstSheet.Name = "."
ws.Copy after:=newWBFirstSheet
newWBFirstSheet.Delete
templatePath = templateFolder & "\" & tmpWb.Worksheets(1).Name & ".xltx"
tmpWb.Worksheets(1).SaveAs templatePath, Excel.XlFileFormat.xlOpenXMLTemplate
tmpWb.Close
Next
Finalize:
Excel.Application.DisplayAlerts = True
Excel.Application.ScreenUpdating = True
Excel.Application.SheetsInNewWorkbook = old_numsheets
End Sub
Теперь вы можете добавить каждый из этих файлов в ресурсы проекта VSTO.
Затем вы экспортируете шаблоны ресурсов во временный файл, как вы это делаете в настоящее время.
Когда вы используете метод Sheets.Add и задаете Type:="path to template"
, вы теперь будет добавлен только один рабочий лист, добавленный в рабочую книгу.