Learning Note

できるようになったことを記録しています

ブックを保存する

ブックを保存するにはSaveメソッドを使用する。

ActiveWorkBook.Save

他にも、以下のような書き方ができる。

SaveAs 名前を付けて保存
SaveCopyAs コピーを保存


使用例

Sub Main()
    ActiveWorkbook.SaveAs Filename:="c:\bin\名前を付けて保存.xlsm"
    ActiveWorkbook.SaveCopyAs Filename:="c:\bin\コピー.xlsm"
End Sub

ブックを閉じる

ブックを閉じるにはCloseメソッドを使用します。

Workbooks("ブック名.xlsx").Close


また、引数により保存して閉じる、保存しないで閉じる、名前を付けて保存を選択することができます。

引数 定数 内容
SaveChanges True ブックの変更を保存して閉じます。
False ブックの変更を保存せずに閉じます。
省略 ファイル名の入力を促すダイアログ ボックスが表示されます。
FileName ファイル名 指定されたファイル名で、変更したブックを保存します。

使用例

Sub Main()
    Dim WB As Workbook
    Set WB = ActiveWorkbook

    Application.Quit '保存と同時にExcelを終了させる
    WB.Close savechanges:=True
End Sub

"Application.Quit"の記述は気持ち的にWB.close処理の後に書きたいが、そうするとExcelが終了せずに残ってしまう。そういうもの?

自分なりのExcel VBAコーディング規約

変数や関数の名前を特にルールを設けずコーディングしていたので今のうちに整理しておきたい。また、今後追加があればこの記事に追記していく。

命名規則

・Sub、Function→Pascal形式(大文字始まり。単語と単語のつなぎ目は大文字)
・動詞、名詞の順で繋げて命名する

・変数→Camel形式(小文字始まり。単語と単語のつなぎ目は大文字)
・オブジェクト変数→全部大文字

・カウンターはi,j,k,lでもOK
・とりあえず数字ならn,m
・件数を数えるときに使うならcnt
・メッセージはmsg
・フラグはflg
・中間処理などの格納はbuf
・一時的に使用する変数はtmp

・コロコロ変わるマジックナンバーはconstで宣言
・プロシージャ(サブ・関数)はモジュール名を指定して呼び出す


その他

・Integerは使わずLongを使う
・なんとなくVariantは辞める
・引数にByVal(値渡し)、ByRef(参照渡し)を指定する
・脱ハンガリアン記法
・Rangeを使用する場合はシート名から記述する