5-4.ブックの保存

今回は、ブックの保存方法について説明します。
ブックの保存は、上書き保存、名前を付けて保存、コピーを保存の3パターンあります。

ブックの上書き保存

Saveメソッド

○構文
Workbook.Save

○処理
オブジェクトに指定したブックを上書き保存します。
エクセルのショートカットキー Ctrl + S に該当します。

指定したブックが保存済みでない場合は、カレントフォルダ(現在参照されているフォルダ)に自動で保存されます。
エクセル操作のように、「名前を付けて保存」のダイアログボックスが表示されないので、注意が必要です。

Sub ブックを上書き保存()
    
    ActiveWorkbook.Save
    
End Sub

名前を付けて保存

SaveAsメソッド

○構文
Workbook.SaveAs FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution,AddToMru,TextcodePage,TextVisualLayout,Local

○処理
オブジェクトに指定したブックを、FileNameに指定したパスに保存します。
エクセルのショートカットキー F12 に該当します。

FileNameに指定したパスと同じ名前のブックが既に保存されている場合、保存に関するメッセージが表示されます。

新規ブックの保存や、保存済みのブックのパス・ファイル名を変更する際に使用します。

○引数
引数が非常に多いですが、FileNameとFileFormatを覚えておけば良いかと思います。

引数必須データ型内容
FileName必須保存先のブックのパス・ブック名を指定
ブック名のみ指定した場合、カレントフォルダに保存
FileFormat省略可xlFileFormat指定したファイル形式で保存
xlFileFormat列挙体は後述
Password省略可ファイルを保護するパスワードを指定
WriteResPassword省略可ファイルを書き込み保護するパスワードを指定
ReadOnly
Recommended
省略可True / FalseTrueを指定すると、ファイルを開く際、読み取り専用を推奨するメッセージを表示する
CreateBackup省略可True / FalseTrueを指定すると、バックアップファイルを作成
AccessMode省略可xlSaveAs
AccessMode
ブックのアクセスモードを指定
xlNoChange:アクセスモードを変更しない(既定)
xlShared:共有モード
xlExclusive:排他モード
ConflictResolution省略可xlSaveConflict
Resolution
共有ブックが更新されるたびに競合解決する方法を指定
xlUserResolution:ダイアログを表示して、ユーザーが重複を解決するように要求
xlLocalSessionChanges:ローカルユーザーの変更を必ず受理
xlOtherSessionChanges:ローカルユーザーの変更を必ず拒否
AddToMru省略可True / FalseTrueを指定すると、最近使用したファイル一覧にブックを追加
TextCodepage?
TextVisualLayout?
Local省略可True / FalseTrueを指定すると、Excelの言語設定に合わせてファイルを保存
Falseを指定すると、VBAの言語設定に合わせてファイルを保存

<FileFormat>
保存したいファイル形式に応じて、下表のxlFileFormatを指定します。
非常に多いですが、よく使うのはxlCSVくらいでしょうか。

xlFileFormat内容
xlAddIn18Microsoft Excel 97-2003 アドイン(*.xla)
xlAddIn818Microsoft Excel 97-2003 アドイン(*.xla)
xlCSV6CSV(*.csv)
xlCSVMac22Macintosh CSV(*.csv)
xlCSVMSDOS24MSDOS CSV(*.csv)
xlCSVUTF862UTF8 CSV(*.csv)
xlCSVWindows23Windows CSV(*.csv)
xlCurrentPlatformText-4158現在のプラットフォームのテキスト(*.txt)
xlDBF27Dbase 2 形式(*.dbf)
xlDBF38Dbase 3 形式(*.dbf)
xlDBF411Dbase 4 形式(*.dbf)
xlDIF9DIF ファイル(*.dif)
xlExcel1250Excel バイナリ ブック(*.xlsb)
xlExcel216Excel バージョン 2.0 (1987)(*.xls)
xlExcel2FarEast27Excel バージョン 2.0 far east (1987)(*.xls)
xlExcel329Excel バージョン 3.0 (1990)(*.xls)
xlExcel433Excel バージョン 4.0 (1992)(*.xls)
xlExcel4Workbook35Excel バージョン 4.0 ブックの形式 (1992)(*.xlw)
xlExcel539Excel バージョン 5.0 (1994)(*.xls)
xlExcel739Excel 95 (バージョン 7.0)(*.xls)
xlExcel856Excel 97-2003 ブック(*.xls)
xlExcel979543Excel バージョン 95 およびバージョン 97(*.xls)
xlHtml44HTML 形式(*.htm。*.html)
xlIntlAddIn26International Add-In(ファイル拡張子なし)
xlIntlMacro25International Macro(ファイル拡張子なし)
xlOpenDocumentSpreadsheet60OpenDocument スプレッドシート(*.ods)
xlOpenXMLAddIn55XML アドインを開く(*.xlam)
xlOpenXMLStrictWorkbook61 (&H3D)XML ファイルを厳密に開く(*.xlsx)
xlOpenXMLTemplate54XML テンプレートを開く(*.xltx)
xlOpenXMLTemplateMacroEnabled53マクロを有効にした XML テンプレートを開く(*.xltm)
xlOpenXMLWorkbook51XML ブックを開く(*.xlsx)
xlOpenXMLWorkbookMacroEnabled52マクロを有効にした XML ブックを開く(*.xlsm)
xlSYLK2シンボリック リンク形式(*.slk)
xlTemplate17Excel テンプレート形式(*.xlt)
xlTemplate817テンプレート 8(*.xlt)
xlTextMac19Macintosh テキスト(*.txt)
xlTextMSDOS21MSDOS テキスト(*.txt)
xlTextPrinter36プリンター テキスト(*.prn)
xlTextWindows20Windows テキスト(*.txt)
xlUnicodeText42Unicode テキスト(ファイル拡張子なし。*.txt)
xlWebArchive45Web アーカイブ(*.mht。*.mhtml)
xlWJ2WD114Japanese 1-2-3(*.wj2)
xlWJ340Japanese 1-2-3(*.wj3)
xlWJ3FJ341Japanese 1-2-3 形式(*.wj3)
xlWK15Lotus 1-2-3 形式(*.wk1)
xlWK1ALL31Lotus 1-2-3 形式(*.wk1)
xlWK1FMT30Lotus 1-2-3 形式(*.wk1)
xlWK315Lotus 1-2-3 形式(WK3)
xlWK3FM332Lotus 1-2-3 形式(WK3)
xlWK438Lotus 1-2-3 形式(*.wk4)
xlWKS4Lotus 1-2-3 形式(*.wks)
xlWorkbookDefault51ブックの既定(*.xlsx)
xlWorkbookNormal-4143ブックの標準(*.xls)
xlWorks2FarEast28Microsoft Works 2.0 far east 形式(*.wks)
xlWQ134Quattro Pro 形式(*.wq1)
xlXMLSpreadsheet46XML スプレッドシート(*.xml)

SaveAsメソッドのサンプルコード

Sub 名前を付けて保存()
    
    '新規ブックを作成し、名前を付けて保存
    Dim bk As Workbook
    Set bk = Workbooks.Add
    bk.SaveAs "C:\Users\ブック.xlsx"
    
    'CSVとして保存
    ActiveWorkbook.SaveAs FileName:="C:\Users\ブック.csv", FileFormat:=xlCSV
    
End Sub

ブックのコピーを保存

SaveCopyAsメソッド

○構文
Workbook.SaveCopyAs FileName

○処理
オブジェクトに指定したブックのコピーを、FileNameに指定したパスに保存します。
コピーを保存するので、オブジェクトに指定したブック自体は保存されません。

SaveCopyAsメソッドは、バックアップを取る場合などに便利です。

SaveAsメソッドとSaveCopyAsメソッドの違いは、
SaveAsメソッドでは、保存後に保存したファイルを参照しますが、
SaveCopyAsメソッドでは、保存後に元のファイルを参照します。

SaveCopyAsメソッドのサンプルコード

Sub コピーを保存()

    'バックアップ用ファイルとして保存
    Dim File_Name As stirng
    File_Name = Replace(ActiveWorkbook.FullName, ".xlsm", "_Backup.xlsm")
    'Replace関数で、ファイル名を_Backupに変更
    
    ActiveWorkbook.SaveCopyAs File_Name
    'Replace関数で変更したファイル名で保存
    
End Sub

コメント