У меня есть следующий код, который делает копии активной книги и дает каждой копии другое имя. Это работает хорошо, НО мне действительно нужен исходный рабочий лист, из которого запускается код, чтобы оставаться активным.
Если вместо этого я использую функцию SaveCopyAs
, скопированные файлы будут иметь неправильный формат файла (.xlsm), и вы не сможете указать формат файла в качестве параметра, как в функции saveAs
.
http://msdn.microsoft.com/en-us/library/bb178003%28v=office.12%29.aspx
http://msdn.microsoft.com/en-us/library/office/ff841185%28v=office.15%29.aspx
Sub makeCopies()
Dim name As Range, team As Range
Dim uName As String, fName As String, fFormat As String
Dim location as string, nName as string
location ="c:\test\"
nName = "Test - Team "
Set team = Names("Team").RefersToRange
For Each name In team
uName = nName & name.Value
fName = location & uName
fFormat = ThisWorkbook.FileFormat
ActiveWorkbook.SaveAs FileName:=fName, FileFormat:=fFormat
Next name
End sub
Лучшее, что я могу придумать, это сначала сделать копии с помощью saveCopyAs
, а затем получить доступ к каждому файлу, сохранить его в правильном формате файла с помощью saveAs
, а затем закрыть его, но это означает двойную работу, и я бы очень не хотел этого делать. Есть ли более разумный способ?