ワークブックのシートをセパレートし、各シートを独立したブックとして保存するマクロを組んでいて気が付いた。
worksheet.Copy() メソッドや worksheet.Move() メソッドで引数を省略して 「新しい未保存のブックが自動的に作成され対象シートがコピーまたは移動する」 ということをになるのだけれど、このメソッドたちは新たに作られらブックの Workbook オブジェクトを返してくれない代わりに、新しいブックが自動的にアクティブになるらしいです。
つまり
Dim newBook As Workbookではなくて「新規作成されたブックは自動的にアクティブになる(はず)」 という仕様を信じ、
Set newBook = currentSheet.Copy()
newBook.SaveAs "hogehoge"
currentSheet.Copy()としなければならないようです。
Dim newBook As Workbook
Set newBook = ActiveWorkbook
多分裏切られたことはないけれどできれば使いたくない ActiveWorkbook です。
まるで 「鉄棒競技で手を放し、練習通りにクルクル回れば練習通りの場所に棒がある」 みたいな。