あなたはファイルに名前を付けて保存するのが面倒だと思ったことはありませんか?
「ファイル名を毎回手入力している」
「伝票番号や顧客名をコピペしている」
そんな作業をしていませんか?
上書き保存は「ctrl」+「S」で保存したり、名前を付けて保存する画面を「f12」で出したり、ショートカットはできますが、ファイル名も自動でつけてくれた方が便利ですよね。
エクセルVBAを使えば、セルに入力されている文字をそのままファイル名として使い、ファイル名を自動でつけてくれます。
保存作業はボタン1回で完了します。
今回は「エクセルでセルの文字をファイル名にして保存するマクロを作る方法」を紹介します。
このページでは、エクセルのセルに入力した文字を使って、
ファイル名を自動で付けて保存する方法を解説します。
「毎回、名前を付けて保存するのが面倒」
「伝票番号や日付をファイル名にしたい」
そんな方に向けて、コピペで使えるVBAコードを紹介します。
このマクロが役立つ実務シーン
・見積書・請求書を「日付+取引先名」で保存する場合
・日報を「2026-02-07_営業日報.xlsx」のように自動命名する場合
・伝票番号をファイル名にして管理ミス防止をする場合
エクセルでセルの文字をファイル名にして保存するマクロを作る方法
エクセルでセルの文字をファイル名にして保存するマクロを作る方法です。
下のように、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出力&ファイル名に伝票番号を付けるのを、マクロボタンで自動化する方法
【VBA】保存先フォルダを指定して名前を付けて保存したい場合
今回のマクロでは保存先を固定していますが、
フォルダを指定してから名前を付けて保存したい 場合は、
以下のページの方法を組み合わせると、より実務向けの仕組みになります。
▶エクセルVBAでフォルダ指定しておいて名前を付けて保存する方法
開いているエクセルファイルの名前をセルに表示したい場合
ちなみに今回は「セルの文字 → ファイル名」でしたが、
逆に、開いているエクセルファイルの名前をセルに表示したい というケースもあります。
その場合は、次のページが参考になります。
▶ エクセルで開いているファイルのファイル名をセルに表示する方法
【関数】ファイル名用にセルの文字を組み合わせたい場合
ファイル名に「日付+氏名+番号」など、
複数のセルの文字を組み合わせたい 場合は、
事前に文字列を作っておくとマクロがシンプルになります。
文字の結合方法はこちらのページで解説しています。


コメント