開いているエクセルファイル(ブック)を上書き保存するにはSaveメソッド、閉じる時はCloseメソッドを使用します。
保存するエクセルファイルは、「ファイル名」または「ワークブック変数」で指定できます。
ファイル名で指定
Workbooksコレクションで、ファイル名を指定してファイルを操作します。
コード
1 2 3 4 5 6 7 8 9 10 |
'ファイルを開く Workbooks.Open("C:\エクセル用フォルダ\生徒一覧表.xlsx") 'ファイルを上書き保存 Workbooks("生徒一覧表.xlsx").Save 'ファイルを閉じる Workbooks("生徒一覧表.xlsx").Close |
解説
「生徒一覧表.xlsx」というファイルを「開く」→「上書き保存」→「閉じる」と順番に処理しています。
VBAを始めたばかりだと、この書き方が見やすく簡単に感じると思います。
ただし、この書き方には1つ問題があります。
対象のファイル名が変わった時、ファイル名「生徒一覧表.xlsx」を記述している3カ所の修正が必要になってしまいます。そのため、次で紹介するワークブック変数で指定する方法がオススメです。
ワークブック変数で指定
処理対象のファイルをワークブック変数に格納し、以降の処理ではワークブック変数でファイルを操作します。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
'開くエクセルファイルを管理する変数 Dim openExcelFile As Workbook 'ファイルを開く Set openExcelFile = Workbooks.Open("C:\エクセル用フォルダ\生徒一覧表.xlsx") 'ファイルを上書き保存 openExcelFile.Save 'ファイルを閉じる openExcelFile.Close |
解説
エクセルファイルを開いたタイミングで、ワークブック変数(openExcelFile)に開いたエクセルファイルを格納しています。
その後の「上書き保存」と「閉じる」処理は、ワークブック変数(openExcelFile)に対して行っています。
最初に紹介したファイル名で指定したプログラムとの違いは、ファイル名「生徒一覧表.xlsx」がプログラム上に1カ所しかないことです。
そのためファイル名が変更になっても、プログラムの修正は1カ所だけでいいので、メンテ性が高いプログラムと言えます。
注意すること
ファイルを開く時は、フルパス(場所+ファイル名)でファイルを指定します。
上書き保存や閉じる時は、ファイル名だけの指定です。(同名のファイルは同時に開けないので、ファイル名だけ特定できるから)