エクセルで資料を作成し決まったルールや法則でPDFファイルを保存するという作業は日常業務で結構多いですね。
例えば、エクセルで見積書や注文書を作成し、PDFファイルで保存し、先方にメールで送信するという作業がそれにあたりますね。
その時に、PDFファイルの保存する作業がもっと簡素化できればと思うことありませんか?
そこで、ボタンをワンクリックすればPDFファイルので保存できる方法を紹介します。
この方法を使えば、あなたの作業時間は数秒削減できます。
しかし、その数秒が一年間積み重なれば、かなりの時間になりますよ。
それでは解説していきましょう。
今回の条件とできること
今回のマクロで出来ることと出来ないこと、条件を説明します。
- ワンクリックでエクセルを名前付付けてPDF形式で保存します。
- 名前の付け方は特定のセルに入力されたデータと保存の時間という名前になります。
- 保存されるフォルダーはあらかじめ設定したところに保存します。
- フォルダーをその都度指定して保存する。
- ファイル名をその都度指定して保存する。
- PDF形式以外の形式で保存する。
- 特定のセルに何かしらのデータを入力する(今回はC3のセルに設定しています)
- 保存フォルダーを指定します。(今回はデスクトップに設定しています。)
手順①開発タブを表示させる
マクロを記録する際に、開発タブを表示させる必要があります。
エクセルを開きます。
ファイルからオプションを開きます。
リボンのユーザー設定を選び、「開発」にチェックを入れます。(チェックがすでに入っている場合はそのままでOKです。)OKをクリックしてエクセルのオプションを閉じます。
そうすると、タブに開発が追加されます。
手順②マクロを記入する
開発タブから「Visual Basic」クリックします。
すると、Microsoft Visual Basic for Applicationsが開きます。
「挿入」から「標準モジュール」をクリックすると、コードを入力するウィンドウが開きます。
そこに以下のコードをコピーして貼り付けてください。(subからEnd Subまで)
Sub ファイル日付で保存pdf()
Dim フォルダー As String, 年 As Integer, 月 As String, 日 As String
Dim 時 As String, 分 As String, ファイル名 As String
年 = Mid(Year(Now()), 3, 2)
月 = Month(Now())
日 = Day(Now())
時 = Hour(Now())
分 = Minute(Now())
Sheets(“sheet1”).Select
Range(“C3”).Select
If Range(“C3”).Value <> “” Then
Dim Fn As String
Fn = Format(Range(“C3”)) &年 & “_” & 月 & “_” & 日 & “_” & 時 & “_” & 分 & “.pdf”
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=”C:\Users\Desktop\” & Fn
Else
MsgBox “指定セルにファイル名が入力されていません。”
Exit Sub
End If
MsgBox “保存しました。”
End Sub
まずは、上記のプログラムをまるっとコピペしてください。
そこで上記にプログラムであなたの環境に合わせるために3カ所変更するところがあります。
要変更箇所①”シート名”
『Sheets(“sheets1”).Select』のところでシートを指定しています。
もしシート名を変更している場合は、その名前を「sheets1」のところを変更してください。
要変更箇所②”保存場所”
作成するPDFファイルの保存先を指定するプログラムが
『Filename:=”C:\Users\Desktop\” & Fn』
のところです。
このプログラムはファイルを保存する場所を指定するプログラムですが、お使いのパソコンによりデスクトップフォルダの場所及び表記が異なるためです。
保存したいフォルダの場所を確認する方法は以下の手順で行えます。
保存先にフォルダのプロパティを開きます。
場所のタブを開くとフォルダのアドレスが表示されます。
それをコピぺしてください。
入力したアドレスの最後に”\”をつけてください。
要変更箇所③”セルの指定”
今回のマクロは『C3セルの内容+保存した時間』がファイル名になって保存されるプログラムです。
そのほかのセルを指定したい場合は”C3”を指定するセルに書き換えてください。(3カ所あります)
今回のマクロはファイル名にセルを指定していますが、その理由として今回のように連続してファイルを保存することを想定する場合、C3のセルに例えば「請求書」のような文言が入っていると、ファイル名が必ず、”請求書”から始まるため、ファイルの整理が楽になります。
もしその機能が必要ないという方は後で、その部分の削除する方法を説明します。
上記の3つを指定及び設定したら、ファイルから終了してMicrosoft Excelに戻るをクリックしてウィンドウを閉じます。
手順③ファイルを保存する
Excelの画面でファイルから名前を付けて保存を選び、Excelファイルを一旦保存します。
その際にファイルの種類を「Excelマクロ有効ブック」の種類で保存します。
ファイル名および保存先は任意でOKです。
今回は仮にBook1.xlsmという名前でドキュメントに保存します。
それにより、拡張子が「.xlsm」になります。
手順④マクロを実行する
先ほど保存したBook1.xlsmを開きます。
マクロを実行するには、開発タブから「マクロ」をクリックします。
実行をクリックすると、”指定セルにファイル名が入力されていません。”という文言が出てきます。
これは先ほど申しましたC3のセルが空白のためこのようなエラーが表示されます。
C3に適当に”あいうえお”と入力してマクロを実行します。
すると、上記で指定したフォルダに”あいうえお年_月_時_分.pdf”というファイルが保存されていると思います。
手順⑤マクロの実行を簡略化する
上記の方法でマクロは実行できますが、マクロを実行する際に毎回上記の手順を踏んだいてはかなり面倒くさいですね。
そこでワンクリックでマクロを実行する方法を紹介します。
開発タブから挿入をクリックします。
フォームコントロール内のボタンをクリックします。
そうすると、マウスは十字になり、ボタンのサイズを任意で決めることができます。
ボタンをサイズを任意で決定すると、「マクロの登録」が開きます。
そこで、先ほど作成した”ファイル日付で保存pdf”を選択し。OKで閉じます。
これで、ボタン1をクリックするとマクロが実行されます。
また、ボタン1の上で右クリックし、テキストの編集をクリックすると、「ボタン1」という文言が変更できます。
今回の場合「PDF保存」とするとわかりやすいですね。
なお、ボタンをどの位置に配置しても、PDFファイルに表記されません。
なので、使いやすい場所に配置すると良いですね。
セルを指定しないマクロ
今回はある特定のセルをファイル名に組み込む方法を紹介しました。
保存をクリックした時間のみをファイル名にするマクロは以下の通りです。
Sub 日付で保存pdf()
Dim フォルダー As String, 年 As Integer, 月 As String, 日 As String
Dim 時 As String, 分 As String, ファイル名 As String
年 = Mid(Year(Now()), 3, 2)
月 = Month(Now())
日 = Day(Now())
時 = Hour(Now())
分 = Minute(Now())
Sheets(“sheet1”).Select
Dim Fn As String
Fn = 年 & “_” & 月 & “_” & 日 & “_” & 時 & “_” & 分 & “.pdf”
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=”C:\Users\fanma\Desktop\” & Fn
MsgBox “保存しました。”
End Sub