質問: True 'xlsx形式だとEXCELに認識させるために、一旦閉じてから再度オープンする ActiveWorkbook.Close Workbooks.Open fullPath Workbooks(myBook).Activate Worksheets("元シート").Activate ThisWorkbook.Sheets("元シート").Copy _ Before:=Workbooks("newBook.xlsx").Sheets("Sheet1") ```
回答: 二つのWorkbookを、それぞれWookbook型の変数に代入すると見通しが良くなりそうに思います。 ActiveWorkbookとかThisWorkbookは、コードのその箇所で何を参照しているのかが判りにくいです。 それに変えて、内容が判るような名前の変数を使うと、コードが理解しやすくなりますよ。 ``` Dim origWB as Workbook, newWB as Workbook '二つのWorkbookを入れる変数を用意する Set origWB = ActiveWorkbook 'もとのワークブックを変数 origWB に入れる Set newWB = Workbooks.Add '新規ワークブックを作成して、変数 newWB に入れる Application.DisplayAlerts = False newWB.SaveAs ActiveWorkbook.Path & "\newBook.xlsx" '作成したワークブックを名前を付けて保存 Application.DisplayAlerts = False origWB.Sheets("元シート").Copy Before:=newWB.Sheets("Sheet1") 'シートのコピー newWB.Save '新規ワークブックを保存 newWB.close '新規ワークブックを閉じる origWB.close '元のワークブックを閉じる ```