やりたいこと
いま開いているエクセルファイルのファイル名を今日の日付に変えるマクロを作ります。
例) excel.xlsx → 20190101.xlsx
完成したマクロの操作イメージ
- マクロファイルを開く。
- 画面に設置してあるボタンを押すと、ファイル選択画面がポップアップで立ち上がる。
- ファイルを指定して、「開く」ボタンを押すと、指定したファイルのファイル名が今日の日付に変わる。
処理のイメージ
- 名前を変更しようとしているファイルの保存場所情報を取得する
- 取得したファイルパスから、ファイル名を取り除く
- 現在の日付を取得して、取得した日付からスラッシュを取り除く
- ファイル名を変更する(下記参照)
作成の流れ
- 「開発」タブ→「コントロール」→「挿入」→「フォームコントロール」→「ボタンの画像」をクリックする。「マクロの登録」ポップアップウィンドウが表示される。
- マクロ名に「FileNameChange」と入力、マクロの保存先を「作業中のブック」にして、「新規作成」ボタンをクリックする。VBEウィンドウが表示される。
- VBEウィンドウ内の右上に位置する「コードウィンドウ」と呼ばれるエリアに以下のコードを入力する。
Sub FileNameChange()
Dim OldName As String 'String(文字列)型の変数「FileName」を宣言
Dim NewName As String 'String(文字列)型の変数「FileName」を宣言
Dim FolderPath As String 'String(文字列)型の変数「FolderPath」を宣言
Dim i As Integer 'Integer(整数)型の変数「i」を宣言
OldName = Application.GetOpenFilename() 'ApplicationオブジェクトのGetOpenFilenameメソッドを使って、ファイルパスとファイル名を取得する
i = InStrRev(OldName, "\") '右から数えて最初の\が、左から数えて何文字目かを取得して、変数「i」に格納する
FolderPath = Left(OldName, i) 'ファイルのフルパスの内、左から数えてi文字目まで取得する
NewName = Format(Now, "yyyymmdd") 'Now関数を使って、yyyymmdd形式で日付を取得し、変数「NewName」に格納
NewName = FolderPath & NewName & ".xlsx" '変数「NewName」に.xlsxを付加
Name OldName As NewName 'Nameステートメントを使って、ファイル名を変更
End Sub
解説
ファイルの名前を変更するには、Nameステートメントを使用します。Nameステートメントでは、「元のファイル名」と「新しいファイル名」を指定します。
用語
ステートメントとは、ひとかたまりのコードのこと。
コードとは、「テキスト」のこと。