アクティブなワークブックのコピーを作成し、各コピーに異なる名前を付ける次のコードがあります。それはうまくいきますが、アクティブな状態を維持するには、コードを実行する元のワークシートが本当に必要です。
代わりに関数を使用する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
から閉じることですが、それは二重の作業を意味し、私はそれをするのが本当に嫌いです. よりスマートな方法はありますか?