マクロ講座20回 

ブックを保存するマクロ

マクロ講座20回 ブックを保存するマクロ~上書き保存と新規保存する場合、ファイル名を入力するダイアログを表示して保存する場合
(サンプルファイルは、こちらから マクロ講座20回サンプルデータ

今日は、ブックを保存するマクロを作ってみましょう。
上書き保存する場合、
新規保存する場合、
ファイル名を入力するダイアログを表示して保存する場合の
3通りです。

最初のマクロは、ブックを上書き保存する場合です。
新規ブックではなく、すでに一度保存しておいてください。

上書き保存するマクロ

(1)マクロの記録ボタン●(赤い丸)をクリックして、
マクロの記録を開始し、

(2)「ファイル」メニューから[上書き保存]を実行します。

(3)■(停止)ボタンを押して、マクロの記録を終了します。
コードは、以下のようになります。
非常にシンプルですね。
    Sub uwagakihozon()
        ActiveWorkbook.save
    End Sub    
上書き保存する場合は、
ActiveWorkbook.save
の1行でいいのですね。
ここでは、saveメソッドという操作を使いました。

新規保存する場合のマクロ

今度は、新規保存する場合のマクロを記録しましょう。

(1)マクロの記録を開始、

(2)ファイルメニューから、名前をつけて保存を実行します。

『名前を付けて保存』ダイアログボックスが表示されます。

サンプルでは、保存先を、Cドライブ直下にしていますが、実際には、
普段エクセルファイルを保存しているフォルダを指定してください。
見積書という名前で保存しました。

(3)マクロの記録を終了します。

コードは、以下のようになります。
こんどは、ちょっと複雑ですが、大丈夫、本体は、
たいしたことないんです。
マクロの記録直後
Sub sinnkihozon()
	ActiveWorkbook.SaveAs Filename:= _
	"C:\見積書.xls", FileFormat:=xlNormal, _
	Password:="", WriteResPassword:="", _
	ReadOnlyRecommended:=False, _
	CreateBackup:=False
End Sub    
ブックに名前を付けて保存したい場合は、
上記のコードのようにSaveAs メソッドを使います。

上書き保存の時と比べるとやたらと長いですね。

それもそのはず、SaveAsメソッドは6つの引数を持っていて

第一引数は、 Filename
第二引数は、FileFormat
第三引数は、Password ・・・

と続きます。

スポンサーリンク
スポンサーリンク

SaveAsメソッド

今回のマクロでは、重要なのは、第一引数のFilenameで、
保存するときのファイル名を指定します。

そのファイル名ですが、ドライブ 名(「C:」など)から始まる
絶対パスを付けて指定したほうが確実です。

もし、省略して保存すると現在のフォルダ(カレントフォルダ)に、
保存されてしまいます。

FileFormatは[名前を付けて保存]ダイアログボックスの
ファイルの種類に対応しており、保存するファイル形式が指定できます。

この引数は、すべて省略可能ですが、通常はFilenameだけを
指定すればいいでしょう。

Filename自体を省略すると、現在のファイル名で保存されますから注意して
くださいね。

というわけで、新規保存するマクロは、
このように簡素化できます。
Sub sinnkihozon()
    ActiveWorkbook.SaveAs Filename:="C:\見積書.xls"
End Sub    
Excel2007以降のファイルを保存する時は、拡張子を変更して
Sub sinnkihozon()
    ActiveWorkbook.SaveAs Filename:="C:\見積書.xlsx"
End Sub    
となります。

ファイル名を入力するダイアログを表示して保存

このマクロはマクロの記録では記録されないので、
直接書いてしまいましょう。
Sub dialog_hozon()
    Application.Dialogs(xlDialogSaveAs).Show
End Sub    
マクロを実行して確かめてくださいね。

Dialogsプロパティは、とても便利なコマンドです。

たとえば、
[ファイルを開く]ダイアログボックスを表示したければ、

Application.Dialogs(xlDialogOpen).Show

印刷ダイアログを表示したければ、

Application.Dialogs(xlDialogPrint).Show

とワンパターンで書けばよいのです。

今回はこれまで、That's it.
スポンサーリンク
スポンサーリンク