0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VBAでエクセルのファイル名(ブック名)を今日の日付に変更する

Posted at

やりたいこと

いま開いているエクセルファイルのファイル名を今日の日付に変えるマクロを作ります。
例) excel.xlsx → 20190101.xlsx

完成したマクロの操作イメージ

  1. マクロファイルを開く。
  2. 画面に設置してあるボタンを押すと、ファイル選択画面がポップアップで立ち上がる。
  3. ファイルを指定して、「開く」ボタンを押すと、指定したファイルのファイル名が今日の日付に変わる。

処理のイメージ

  1. 名前を変更しようとしているファイルの保存場所情報を取得する
  2. 取得したファイルパスから、ファイル名を取り除く
  3. 現在の日付を取得して、取得した日付からスラッシュを取り除く
  4. ファイル名を変更する(下記参照)

作成の流れ

  1. 「開発」タブ→「コントロール」→「挿入」→「フォームコントロール」→「ボタンの画像」をクリックする。「マクロの登録」ポップアップウィンドウが表示される。
  2. マクロ名に「FileNameChange」と入力、マクロの保存先を「作業中のブック」にして、「新規作成」ボタンをクリックする。VBEウィンドウが表示される。
  3. 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ステートメントでは、「元のファイル名」と「新しいファイル名」を指定します。

用語

ステートメントとは、ひとかたまりのコードのこと。
コードとは、「テキスト」のこと。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?