ファイルを指定してSaveを使えば自動でファイルを保存することができます。
Sub test()
ThisWorkbook.Save
End Sub
他にも名前を付けて保存したり、実行日の日付を加えた名前で保存したりも可能です。
Saveで上書き保存する
Sub test()
ThisWorkbook.Save
End Sub
プログラム実行ファイル自身を上書き保存するなら、Thisworkbook.Saveです。
ThisWorkbookはプログラムを書いたファイルを指しています。
もし”Book1.xlsx”というファイルなら、以下のように書きましょう。
Sub test()
Workbooks("Book1.xlsx").Save
End Sub
Workbooks(“ファイル名”)で指定してSaveで保存します。
SaveAsで名前をつけて保存する
Sub test()
Workbooks("Book1.xlsx").SaveAs "C:\Users\HTOM\Desktop\Book1_saved.xlsx"
End Sub
Workbooks(“ファイル名”)で指定する部分は同じです。
その後にSaveAsを足して半角スペースを空け、保存先のファイルのパスを書きましょう。
ファイルのパスとはファイルの位置のことで、”\”を境にフォルダの階層が変わります。
上図ではデスクトップに”Book1_saved.xlsx”として保存しています。
もし保存先をドキュメントフォルダにしたいなら以下のように書き換えましょう。
Sub test()
Workbooks("Book1.xlsx").SaveAs "C:\Users\HTOM\Documents\Book1_saved.xlsx"
End Sub
Desktopの部分がDocumentsに変わっていますね。
ユーザー名は人によって違うので注意してください。
保存する際にもし同名ファイルがあると、以下の確認ウィンドウが現れます。
“はい”か”いいえ”を選べばいいのですが、”キャンセル”を押すとエラーになります。
エラーするとプログラムが止まっちゃうので、対処しておきましょう。
“On Error GoTo Error”で、エラー時にError:の位置まで移動させることができます。
Sub test()
On Error GoTo Error
Workbooks("Book1.xlsx").SaveAs "C:\Users\HTOM\Desktop\Book1_saved.xlsx"
Exit Sub
Error:
MsgBox "キャンセルされました。"
End Sub
もし”キャンセル”を押してエラーになったら終了させましょう。
パスワードをつけて保存する
Password := “パスワード”で設定可能です。
Sub test()
Workbooks("Book1.xlsx").SaveAs "C:\Users\HTOM\Desktop\Book1_saved.xlsx", Password:="pass"
End Sub
ちなみに、保存先ファイルパスはFilenameで設定されています。
Sub test()
Workbooks("Book1.xlsx").SaveAs Filename:="C:\Users\HTOM\Desktop\Book1_saved.xlsx", Password:="pass"
End Sub
引数名をすべて書くとコードが長くなりますが、この方が確実で親切です。
読み取り専用で保存する
ファイルを開く際に読み取り専用を確認したい場合は、ReadOnlyを設定しましょう。
Sub test()
Workbooks("Book1.xlsx").SaveAs Filename:="C:\Users\HTOM\Desktop\Book1_saved.xlsx", ReadOnlyRecommended:=True
End Sub
ReadOnlyRecommendedをTrueにすれば、該当ファイルを開くときに以下の確認ウィンドウが現れます。
保存してからファイルを閉じる
Sub test()
Workbooks("Book1.xlsx").Save
Workbooks("Book1.xlsx").Close
End Sub
Workbooks(“ファイル名”).Closeで指定したファイルを閉じることができます。
もちろんSaveAsと組み合わせても大丈夫です。
Sub test()
Workbooks("Book1.xlsx").SaveAs Filename:="C:\Users\HTOM\Desktop\Book1_saved.xlsx"
Workbooks("Book1_saved.xlsx").Close
End Sub
ただし、この場合は保存後のファイル名が変わっています。(上図なら”Book1_saved”)
なので、Closeの時に指定するファイル名に注意しましょう。
Closeの引数を設定すれば保存しながらファイルを閉じることができます。
Sub test()
Workbooks("Book1.xlsx").Close savechanges:=True, Filename:="C:\Users\HTOM\Desktop\Book1_saved.xlsx"
End Sub
savechangesをTrueに設定し、Filenameに保存先のパスを書きましょう。
すると指定したファイルが閉じられるとともに別名で保存されます。
しかし、何も変更がない場合は別名ファイル(“Book1_saved”)が作成されません。
日付を含めた名前をつけて保存する
Sub test()
y = Year(Date)
m = Month(Date)
d = Day(Date)
saveName = "Book1_saved"
saveName = saveName & "_" & y & Format(m, "00") & Format(d, "00") & ".xlsx"
Workbooks("Book1.xlsx").SaveAs Filename:="C:\Users\HTOM\Desktop\" & saveName
End Sub
Format(数字, “00”)で2桁表示に統一できます。
これを保存したい名前に足して.SaveAsの引数Filenameに使いましょう。
まとめ
今回はファイルの保存方法について解説しました。
ファイルを開いたりコピーしたりと別の作業のプログラムに組み込みたいですね。
コメント