Excelブックの操作とイベント処理&VBAのエラー処理Excelマクロ/VBAで始める業務自動化プログラミング入門(10)(3/4 ページ)

» 2016年09月08日 05時00分 公開
[薬師寺国安PROJECT KySS]

SaveAsメソッドで名前を付けて保存

 データを追加し、別なファイル名で保存したい場合は、通常の業務ではよく出てくる場面だ。そんな場合もマクロ化してしておいて、ボタンクリック1つで、ファイルを指定した任意のファイル名で保存されるようにしておけば、保存するときの手間も改善できて作業効率も上がるというものだ。

 ファイル名を固定して、その後ろに該当月を追加して保存すれば、月ごとのファイル名が保存されることになる。非常に効率的ではないか。そんなマクロを次に紹介しよう。

 ブックに名前を付けて保存するにはSaveAsメソッドを使用する。書式は下記の通りだ。

SaveAsメソッドの書式

Workbookオブジェクト.SaveAs FileName:={パス付ファイル名2}


 {パス付ファイル名2}には、フルパスで保存するExcelのファイル名を指定する。通常マクロを含んでいない場合のファイルなら拡張子は「.xlsx」で、マクロを含んでいるファイルなら拡張子は「.xlsm」ファイルとして指定する。マクロを含んでいるのに「.xlsx」で保存しようとしたり、マクロを含んでいないのに「.xlsm」ファイルで保存しようとしたりすると、エラーになるので注意してほしい。

 今回行うのは、図7の「社員売上表を開く」ボタンで「社員売上表.xlsx」ファイルを開き、このファイルにデータと[名前を付けて保存]ボタンを追加して、別名のマクロファイル「社員売上表2016_当該月.xlsx」として保存する作業だ。この保存するファイルにはマクロは記述していないので、拡張子はxlsxになる。[名前を付けて保存]ボタンに関連付けるマクロは、図7に記述している。

 まず図7で「社員売上表.xlsx」ファイルを開く。データを追加する。[名前を付けて保存]ボタンを追加する(図8)。

図8 データを追加し[名前を付けて保存]ボタンを追加する

 リスト6のマクロを記述する。

Sub 名前を付けて保存()
  Dim myFileName As String
  myFileName = "j:\Excel2016Data\社員売上表2016_" & Format(Date, "mm") & ".xlsx"
  ActiveWorkbook.SaveAs Filename:=myFileName
End Sub
リスト6 名前を付けてファイルを保存する

※読者がこのマクロを試す場合は、保存先のパスは読者の保存先のパスに変更する必要がある。

 ファイル名は「社員売上表2016_当該月.xlsx」として保存する。

 「Format(Date,"mm")」は現在の日付から「月」だけを取得して01、02、……12という月の値を取得している。「m」は「Month」の略だと思っていい。よって2月に保存すれば「社員売上表2014_02.xlsm」というファイル名になる。当該月が末尾に追加されたファイル名になり、大変に便利ではないだろうか。

 図9のように指定したフォルダにファイルが保存されている。

図9 ファイルが保存されている

[名前を付けて保存]のダイアログボックスの表示

 今回は直接名前を付けてファイル名を保存させているが、[名前を付けて保存]のダイアログボックスを表示させたい場合は、下記のように書く。

Application.Dialogs({引数}).Show

 Dialogsの{引数}には、いろいろ指定できる。VBEのマクロ入力画面で「Application.Dialogs(」まで入力すると、いろいろな入力候補が表示されるので、実際に書いて確認してほしい。

 「ファイルを開く」ダイアログを表示するには、「xlDialogOpen」を指定する。[セルの書式設定画面]を表示するには「xlDialogFontProperties」を指定する(図10)。

図10 [セルの書式設定画面]が表示

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。