EXCEL VBA EXCELファイル・ワークブック・アクティブシートの保存・上書き保存・選択保存 (SaveAs・GetSaveAsFilename)
EXCEL VBA EXCELファイル・ワークブック・アクティブシートの保存・上書き保存・選択保存(SaveAs・GetSaveAsFilename)
●はじめに
EXCEL作成したファイルは、SaveAsメゾットを利用してEXCELファイル(ブック)を保存する事が出来ます。また、ブックを保存(SaveAs)する際に、引数(FileFormat)を指定する事により、CSVファイル・テキストファイルなども保存する事が出来ます。また、GetSaveAsFilenameを利用して保存先・ファイル名などを選択して保存する事もできます。それでは、EXCEL VBAでのブック保存に関する説明を順番に致します。
●EXCEL VBA ブックを閉じる
(ブック全てを保存して閉じる・変更されていれば保存・保存しないで閉じる)については、下記のURLを参照して下さい。
https://akira55.com/workbookclose
●書式の説明
オブジェクト.SaveAs(Filename,FileFormat)
記述例:ActiveWorkbook.SaveAs Filename:=”C:\Hozon\Test”
説明 :現在開いているワークブックをCドライブの”Hozon”フォルダーの中に「Test」の名前で保存します。
拡張子 | 定数 | 内容 |
---|---|---|
.xlsx | xlOpenXMLWorkbook | Excelブック |
.xlsm | xlOpenXMLWorkbookMacroEnabled | Excel マクロ有効ブック |
.csv | xlCSV | CSVファイル |
.txt | xlCurrentPlatformText | テキストファイル |
.xls | xlWorkbookNormal | Excel 97-2003 ブック |
EXCELファイル(ブック)に名前を付けて保存 (SaveAs)
●プログラム説明 サンプル①
(画像クリックで拡大)
(画像クリックで拡大)
1 2 3 4 5 6 7 8 9 |
Sub SaveAs01() Dim Fname As String Fname = InputBox("ファイル名を入力して下さい。") '保存するファイル名を入力します。 ActiveWorkbook.SaveAs Filename:="C:\Hozon\" & Fname '入力されたファイル名で保存します。 End Sub |
●実行前~実行後 ※上記プログラム実行後、ファイル名の入力画面(INPUTBOX)が表示されるので、ファイル名を入力します。入力を指定されたファイル名で指定されたCドライブの直下の”Hozon”フォルダー”内にファイルが保存されました。
(画像クリックして拡大)
(画像クリックして拡大)
EXCELファイル(ブック)を上書き保存する。(SaveAs)
●プログラム説明 サンプル②
(画像クリックで拡大)
(画像クリックで拡大)
下記のプログラムは、現在の開いているアクティブブックに対して上書き保存を実行するプログラムです。実行後に、ブックを上書きするか確認メッセージが表示(はい/いいえ)されます。「はい」を選択しますと上書き保存されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub SaveAs02() Dim SaveOnOff As Integer SaveOnOff = MsgBox("ブックの上書き保存を行いますか?", vbYesNo + vbQuestion, "確認") '上書き保存の確認メッセージが表示されます。 If SaveOnOff = vbYes Then Application.DisplayAlerts = False '上書き保存する際に、警告メッセージを無視します。 ActiveWorkbook.Save 'アクティブブックの上書き保存を実行します。 Application.DisplayAlerts = True '警告メッセージの無視を解除します。 MsgBox "上書き保存を実行しました。" Else MsgBox "上書き保存をキャンセルしました。" End If End Sub |
●実行前~実行後 ※プログラム実行後、ブックの上書きメッセージが表示され「はい」を選択するとブックの上書きを実行します。(画面クリックして拡大)
EXCELファイル(ブック)をCSV(テキスト)ファイルで保存する。(SaveAs)
●プログラム説明 サンプル③
(画像クリックで拡大)
(画像クリックで拡大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub SaveAs03() Dim CSV_Go As Integer CSV_Go = MsgBox("CSVファイルに出力しますか?", vbYesNo + vbQuestion, "確認") 'CSVファイルへの出力メッセージの表示。 If CSV_Go = vbYes Then Application.DisplayAlerts = False '上書き保存する際に、警告メッセージを無視します。 ActiveSheet.Copy '現在のアクティブシートを新規ブックに保存します。 ActiveWorkbook.SaveAs Filename:="C:\Hozon\text.csv", FileFormat:=xlCSV, Local:=True 'CSVファイルに保存します。 Application.DisplayAlerts = True '警告メッセージの無視を解除します。 MsgBox "CSVファイルを出力しました。" Else MsgBox "キャンセルしました。" End If End Sub |
●実行前~実行後 ※プログラム実行後、CSVファイルに出力メッセージが表示されるで「はい」を選択すると現在のアクティブシート(ブック)のデータがCSVファイルとして保存されます。
注意:下記の実行結果は、CSVファイル出力後、メモ帳にてCSVファイルを開いています。
(画面クリックして拡大)
注意:下記の実行結果は、CSVファイル出力後、メモ帳にてCSVファイルを開いています。
(画面クリックして拡大)
EXCELファイルを指定した場所に保存する・別ファイルを保存する。(SaveAs・GetSaveAsFilename)
●プログラム説明 サンプル④
(画像クリックで拡大)
(画像クリックで拡大)
下記のプログラムは、現在の開いているEXCELブックに対して、名前を変えて別の場所に保存するか、そのまま上書き保存するかを選択するプログラムです。
※具体的な処理手順については、下図を参照して下さい。
※具体的な処理手順については、下図を参照して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Sub SaveAs04() '保存先を選択して保存する。 Dim F_name As Variant Dim SaveOnOff As Integer SaveOnOff = MsgBox("名前を変えて別の場所に保存しますか?", vbYesNo + vbQuestion, "確認") '別の場所に保存するか確認メッセージが表示されます。 Application.DisplayAlerts = False '保存する際の警告メッセージを無視します。 If SaveOnOff = vbYes Then '(”はい”の場合は、ダイアログが表示されて場所を選択・ファイル名を入力して保存します。) Do F_name = Application.GetSaveAsFilename(FileFilter:="Excelファイル,*.xls*") '保存先を指定するダイアログを表示します。 Loop Until F_name <> False 'ファイル名が入力されたか? ActiveWorkbook.SaveAs Filename:=F_name 'EXCELファイルを保存します。 Else '(”いいえ”の場合は、そのまま上書き保存します。) ActiveWorkbook.Save 'アクティブブックの上書き保存を実行します。 MsgBox "上書き保存を実行しました。" End If Application.DisplayAlerts = True '警告メッセージの無視を解除します。 End Sub |
●実行前~実行後
上記のプログラムを実行しますと、選択肢より実行処理が異なります。
※「はい」・・・を選択した場合は、別の保存場所を選択し別の名前でEXCELファイルを保存されます。
※「いいえ」・・を選択した場合は、そのまま上書き保存されます。
※「はい」・・・を選択した場合は、別の保存場所を選択し別の名前でEXCELファイルを保存されます。
※「いいえ」・・を選択した場合は、そのまま上書き保存されます。
最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。