ワークシートをPDFファイルとして保存し、Outlookで添付ファイルとしてメール送信するにはどうすればよいですか?
日常業務では、特定のワークシートを同僚やクライアントと共有する必要があるが、ファイル形式を固定し安全に保ちたい場合によく遭遇します。Outlookを使ってワークシートをPDFファイルとして送信することは一般的な要件であり、特にレポートの文書化、請求書の送信、または簡単に変更されるべきでない最終データを共有する際に重要です。従来の方法では、ワークシートを手動でPDFとして保存し、Outlookを開き、メールを作成してPDFを添付して送信しますが、これは繰り返し行う場合や複数のシートを扱う場合には面倒で時間がかかります。
この記事では、ワークシートをPDFに変換し、Excelから直接Outlookメールに添付するプロセスを自動化する方法についてステップごとに説明します。これにより、大幅な時間節約ができ、反復的な手作業を回避できます。VBAコードソリューションおよび操作、利点、適用シナリオ、実用的なヒントの詳細をご紹介します。
VBAコードを使用してワークシートをPDFファイルとして保存し、添付ファイルとしてメール送信する
VBAコードを使用してワークシートをPDFファイルとして保存し、添付ファイルとしてメール送信する
ExcelワークシートをPDFファイルとしてエクスポートし、Outlookでメール送信するプロセスを迅速化するために、以下のVBAコードを使用できます。このアプローチは、特に個別のレポート、請求書、またはその他のデータスナップショットをExcelから直接頻繁に送信する必要がある場合に非常に役立ちます。PDF保存とメール送信のステップが完全に自動化されます。
この方法を適用する前に、Microsoft Outlookがインストールされ、デフォルトのメールクライアントとして設定されていることを確認してください。マクロがExcel環境で有効になっている場合に最も良好に動作します。
1. 保存して送信したいワークシートを開きます。Alt + F11キーを同時に押して、Microsoft Visual Basic for Applications (VBA) エディターを起動します。
2. VBAウィンドウで、メニューに移動して「挿入」>「モジュール」をクリックします。これにより新しいコードモジュールが作成されます。その後、次のVBAコードをモジュールのコードウィンドウにコピーして貼り付けます。
VBAコード: ワークシートをPDFファイルとして保存し、添付ファイルとしてメール送信する
Sub Saveaspdfandsend()
Dim xSht As Worksheet
Dim xFileDlg As FileDialog
Dim xFolder As String
Dim xYesorNo As Integer
Dim xOutlookObj As Object
Dim xEmailObj As Object
Dim xUsedRng As Range
Set xSht = ActiveSheet
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
If xFileDlg.Show = True Then
xFolder = xFileDlg.SelectedItems(1)
Else
MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder"
Exit Sub
End If
xFolder = xFolder + "\" + xSht.Name + ".pdf"
'Check if file already exist
If Len(Dir(xFolder)) > 0 Then
xYesorNo = MsgBox(xFolder & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _
vbYesNo + vbQuestion, "File Exists")
On Error Resume Next
If xYesorNo = vbYes Then
Kill xFolder
Else
MsgBox "if you don't overwrite the existing PDF, I can't continue." _
& vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro"
Exit Sub
End If
If Err.Number <> 0 Then
MsgBox "Unable to delete existing file. Please make sure the file is not open or write protected." _
& vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File"
Exit Sub
End If
End If
Set xUsedRng = xSht.UsedRange
If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then
'Save as PDF file
xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard
'Create Outlook email
Set xOutlookObj = CreateObject("Outlook.Application")
Set xEmailObj = xOutlookObj.CreateItem(0)
With xEmailObj
.Display
.To = ""
.CC = ""
.Subject = xSht.Name + ".pdf"
.Attachments.Add xFolder
If DisplayEmail = False Then
'.Send
End If
End With
Else
MsgBox "The active worksheet cannot be blank"
Exit Sub
End If
End Sub
3. コードを貼り付けた後、F5キーを押すか、VBAエディタで「実行」をクリックしてマクロを実行します。フォルダ選択ダイアログが表示されます。PDFファイルを保存する対象のフォルダを選択し、「OK」をクリックして続行します。
注意事項と実用的なヒント:
4. 処理が完了すると、新しいOutlookメールウィンドウが生成され、PDFファイルが添付されます。件名にはワークシートの名前が「.pdf」で終わる形で事前に入力されています。メールの内容を編集し、宛先を追加して、必要に応じて送信します。これにより、手動での添付よりもエラーが減少し、効率が向上します。
このVBAベースのアプローチは、完成したワークシートを定期的にPDF添付ファイルとして配布する必要がある場合に最も効率的であり、反復的な手作業を最小限に抑えます。制限点としては、Outlookへの依存、一度に複数のシートをまとめて処理できないこと、およびマクロを有効にする必要があることが挙げられます。より複雑なワークフロー(例えば、複数のワークシートを一括送信する場合や高度な自動化が必要な場合)には、Excelのアドインまたは組み込み機能の使用を検討してください。
代替ソリューション: 環境上、VBAマクロが適さない場合(マクロが制限されている場合など)、Excelの組み込みの「エクスポート」または「名前を付けて保存」機能を手動で使用してワークシートをPDFとして保存し、それをOutlookで添付して送信することができます。この方法は手順が増えますが、特別な権限やスクリプトの知識を必要とせず、普遍的に利用可能です。
ワークシートまたは複数のワークシートを個別のPDFファイルとして一度に簡単に保存する方法:
Kutools for Excelのブック分割ユーティリティを使用すると、以下のデモに示すように、ワークシートまたは複数のワークシートを個別のPDFファイルとして簡単に一度に保存できます。今すぐダウンロードしてお試しください!(30日間無料トライアル)
関連記事:
- タイムスタンプ付きでExcelファイル名を保存する方法は?
- Excelで既存のファイルを自動的に上書きするには「名前を付けて保存」機能を使用するには?
- Excelで複数またはすべてのシートを別々のCSVまたはテキストファイルとして保存/エクスポートするには?
- Excelで「保存」と「名前を付けて保存」オプションを無効にするには?
- Excelでブックの保存を無効にし、「名前を付けて保存」のみ許可するには?
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパーLOOKUP:複数条件でのVLookup|複数値でのVLookup|複数シートの検索|ファジーマッチ…… | |
高度なドロップダウンリスト:ドロップダウンリストを素早く作成|連動ドロップダウンリスト|複数選択ドロップダウンリスト…… | |
列マネージャー:指定した数の列を追加 |列の移動 |非表示列の表示/非表示の切替| 範囲&列の比較…… | |
注目の機能:グリッドフォーカス|デザインビュー|強化された数式バー|ワークブック&ワークシートの管理|オートテキスト ライブラリ|日付ピッカー|データの統合 |セルの暗号化/復号化|リストで電子メールを送信|スーパーフィルター|特殊フィルタ(太字/斜体/取り消し線などをフィルター)…… | |
トップ15ツールセット:12 種類のテキストツール(テキストの追加、特定の文字を削除など)|50種類以上のグラフ(ガントチャートなど)|40種類以上の便利な数式(誕生日に基づいて年齢を計算するなど)|19 種類の挿入ツール(QRコードの挿入、パスから画像の挿入など)|12 種類の変換ツール(単語に変換する、通貨変換など)|7種の統合&分割ツール(高度な行のマージ、セルの分割など)|… その他多数 |
Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...
Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に
- Word、Excel、PowerPointでタブによる編集・閲覧を実現。
- 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
- 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!
全てのKutoolsアドインを一つのインストーラーで
Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。





- オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得