あなたはファイルに名前を付けて保存するのが面倒だと思ったことはありませんか?
上書き保存は「ctrl」+「S」で保存したり、名前を付けて保存する画面を「f12」で出したり、ショートカットはできますが、ファイル名も自動でつけてくれた方が便利ですよね。
エクセルVBAを使えば、セルに入った文字を参照して、ファイル名を自動でつけてくれます。
今回は「エクセルでセルの文字をファイル名にして保存するマクロを作る方法」を紹介します。
エクセルでセルの文字をファイル名にして保存するマクロを作る方法
エクセルでセルの文字をファイル名にして保存するマクロを作る方法です。
下のように、A2セルの文字をファイル名として、ブックを保存するのを例に紹介します。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力
コードを入力します。
A2セルをファイル名として、デスクトップに、ファイルを保存する、という意味です。

赤枠部のコードです。
Dim fileName As String
Dim filePath As String
‘ ファイル名を取得
fileName = Range(“A2”).Value
‘ ファイルの保存場所をデスクトップに設定
filePath = Environ(“USERPROFILE”) & “\Desktop\” & fileName & “.xlsx“
‘ ファイルを保存
ActiveWorkbook.SaveAs fileName:=filePath, FileFormat:=xlOpenXMLWorkbook
※注:赤字部の「.xlsx」を「.xlsm」にすると、マクロ有効ブックで保存できます。
コードを入力したら、コードの入力画面を閉じて下さい。
5.ボタンができた →A2セルに文字を入力 →ボタンをクリック
ボタンができました。
A2セルに文字を入れたら、ボタンをクリックします。

6.ファイルが保存された
A2セルの文字で、ファイルに名前を付けて保存ができました。

実際の使い方の例 1
実際に書類に使ってみます。
下のような請求書を使って、「伝票NO 会社名」でファイルを保存したいとします。

TEXJOIN関数を使って、伝票NOと会社名を、A2セルに連結します。
(TEXTJOIN関数の使い方は、下のリンクで紹介していますので、使い方を確認したい方は、下のリンクからどうぞ。
→エクセルで別のセルの文字をつなげる方法 CONCAT TEXTJOIN関数)

A2セルに伝票NOと会社名の連結表示が出ました。
これならA2セルにも入力不要で、自動表示できます。
次に、先ほど作ったマクロボタンを押します。

「伝票NO 会社名」で新規ファイルが保存できました。
これなら書類のセルに文字を入れればいいので、同じ番号や会社名などを、セルに入力して、ファイル名をつけるときにも入力して・・・という二度打ちがなくなりますね!

実際の使い方の例 2
次はセルに入っている文字列をいくつか組み合わせて、ファイル名にして保存する例です。
ファイルを保存するときに「20230301_請求書_ABC株式会社_12345678」など、
日付、文書名、会社名、伝票番号などをファイル名に入れたいことが多いと思います。
日付、会社名、伝票番号は、エクセルのセルに記載してあるので、そのままファイル名に転記します。
日付は、「2023/03/01」でスラッシュ(/)が入っているとうまくいかないので、「YYYYMMDD」形式に変換してから転記します。

その場合のコードを紹介します。

赤枠部のコードです。
Dim fileName As String
Dim filePath As String
Dim dateText As String
‘ 日付の各部分を取得
Dim yearPart As String
Dim monthPart As String
Dim dayPart As String
yearPart = Format(Range(“I3”).Value, “YYYY”)
monthPart = Format(Range(“I3”).Value, “MM”)
dayPart = Format(Range(“I3”).Value, “DD”)
‘ ファイル名を作成
fileName = yearPart & monthPart & dayPart & “請求書” & Range(“C2”).Value & “_” & Range(“I2”).Value
‘ ファイルの保存場所をデスクトップに設定
filePath = Environ(“USERPROFILE”) & “\Desktop\” & fileName & “.xlsx”
‘ ファイルを保存
ActiveWorkbook.SaveAs fileName:=filePath, FileFormat:=xlOpenXMLWorkbook
これでボタンを押すと・・・下の画像のようにファイル名にセル情報が自動で反映されました。

これならファイル名の打ち直しは無くなりますね!
まとめ
エクセルでセルの文字をファイル名にして保存するマクロを作る方法です。
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック
2.新規作成をクリック
3.コードを入れる画面が出る
4.コードを入力
5.ボタンができた →A2セルに文字を入力 →ボタンをクリック
6.ファイルが新規保存できる
これで、セルに入れた文字でファイル名の保存ができるので、セルに入力して、ファイル名をつけるときにも入力して・・・という二度打ちがなくなって、楽になりますね!
伝票作成後の保存が速くできたら、次はPDFに出力するのをラクにできたら良くないですか?
マクロを使えば一発です。
やり方は下のリンク先で紹介しています。
PDFへの変換と、ファイル名のリネームを速くしたい方は、下のリンク先へどうぞ。
→エクセルでPDF出力&ファイル名に伝票番号を付けるのを、マクロボタンで自動化する方法
伝帳法の対応などで、PDF発行や受領した文書について、どれを保存したのか、わからなくなることなどありませんか?
保存したかどうかなどを、後から確認できるようなチェックリストを作る方法を紹介していますので、後からチェックを楽にしたい方は参考にしてみて下さい。
コメント