まずは削除できる内容を削除しよう

まず、先ほど確認したとおり、保存先は、引数Filenameでも指定されています。したがって、ChDirステートメントの記述は不要になるので削除します。


そして、SaveAsメソッドの引数Filename以外の4つの引数も、特に指定の必要がないので削除します。


これで、2行のシンプルなマクロに整理されました。

変数を利用してブック名を指定できるように改良しよう

現在のままだと、このマクロを実行したときに、常に「SampleBook.xls」という名前のブックがCドライブに作成されます。そこで、ここでは、セルA2に作成したいブック名を入力して、そのブック名を使って新規作成するように改良してみます。

まず、作成中のBook1を選択して、ワークシート「Sheet1」のセルA2にブック名の入力欄を用意します。


そして、セルA2に入力されたデータを一時的に保管するしくみを作成します。ここで使用するのが「変数」です。変数とは、入力されたデータなどを一時的に保存できる箱のようなもので、使用するには手続きが必要です。

その手続きとは、「どのような名前の箱にするのか」ということを表す「変数名」と、「どのような種類のデータを保存するのか」ということを表す「データ型」を「宣言」することです。変数名には、ちょっとだけ制限がありますが、ほぼ自由に名前を付けることができます。また、データ型には、データの種類によって決められたキーワードを記述します(変数名の制限や、データ型を指定するキーワードについては、別な機会に紹介します)。

変数を宣言するには「Dim」ステートメントを使用します。「Dim 変数名 As データ型」という形で記述します。ここでは、ブック名を表す文字列を保存したいので、変数名に「BookName」、データ型に「String」を指定します。
※Dimステートメント以外に、Publicステートメントで宣言する方法もあります。詳しくは、別な機会に解説します。


Dimステートメントは、プロシージャ内で、変数を使用したい場所より前に記述します。使用する直前に記述することもありますが、ここでは、プロシージャの冒頭(コメントのあと)に記述することにします。
※モジュールの先頭に記述することもできます。詳しくは、別な機会に解説します。

これで、変数BookNameを使用する準備ができました。この変数には、セルA2に入力されたデータを保存するのでした。変数にデータを入力するには、代入演算子「=(イコール)」を使用して次のように記述します。なお、セルA2の値を取得するには、Valueプロパティを使用して「Range("A2").Value」と記述します。
 

変数に保存したデータを使用する

変数にデータを入力したあとは、変数名を記述することで、入力されたデータを使用することができます。

今回の場合、変数に保存したデータを使用するには、ちょっとした工夫を施す必要があります。目的は、SaveAsメソッドの引数Filenameで、変数BookNameの値を利用することです。つまり、「SampleBook」を変数BookNameに置き換えるということです。


しかし、単純に「"C:? BookName.xls"」とすると、「BookName.xls」という名前のファイルを指定することになってしまいます。「"(ダブルクォーテーション)」で囲まれている文字は、そのまま文字列として認識されてしまうからです。

そこで、前後の「"C:?"」「".xls "」と「BookName」を切り離して、「&」で結合するように修正します。つまり「"C:?" & BookName & ".xls"」と記述するわけです。こうすれば、「BookNameに保存されている値(つまりセルA2の値)」と「"C:?"」「".xls "」が結合されて、「"C:?(セルA2の値).xls"」の形になります。たとえば、セルA2に「売上一覧」と入力すると、「"C:? 売上一覧.xls"」となります。
 

仕上げ

これで、マクロの編集は終了です。仕上げとして、ワークシートにボタンを配置して、編集したマクロを登録します。早速、セルA2に「売上一覧」と入力して、ボタンをクリックすると、新規ブックが作成されて、「売上一覧.xls」という名前が付けられ、Cドライブ直下に保存されます。これらの作業がワンクリックで終了します。
 

変数のイメージ

今回のマクロは、メソッドの構文が中心でしたね。そして、記録した内容を整理して、ステートメントを2行追加しました。今回紹介した変数の知識と、変数を利用するためのステートメントの加工は、ぜひ覚えておいてください。

最後に、変数のイメージを簡単に確認しておきましょう。
変数を宣言したところで「データを入れる箱」が用意され、セルA2に入力されている値が変数に代入されます。その後に、新規ブックが作成されて、変数に代入されていたデータを使用して保存されます。


エクセルでシート作成するマクロ(ワークシート追加)」では、今回作成したマクロをさらに強化するために、ワークシートの操作を記録、編集する内容を紹介しています。

【関連記事】

※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。