メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

ワークシートをPDFファイルとして保存し、Outlookで添付ファイルとしてメール送信するにはどうすればよいですか?

Author Siluvia Last modified

日常業務では、特定のワークシートを同僚やクライアントと共有する必要があるが、ファイル形式を固定し安全に保ちたい場合によく遭遇します。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」をクリックして続行します。

run vba code to select a folder to save this PDF file

注意事項と実用的なヒント:

1. このマクロはワークシートと同じ名前のPDFファイルを作成し、選択したフォルダに保存します。
2. アクティブなワークシートが空の状態でコードを実行しようとすると、下のスクリーンショットのような警告ダイアログが表示されます。これは誤って空白のPDFを保存したりメールしたりすることを防ぐためです。これを避けるには、マクロを実行する前にワークシートに内容があることを確認してください。

If the active worksheet is blank,a warning prompt box is popped out

4. 処理が完了すると、新しいOutlookメールウィンドウが生成され、PDFファイルが添付されます。件名にはワークシートの名前が「.pdf」で終わる形で事前に入力されています。メールの内容を編集し、宛先を追加して、必要に応じて送信します。これにより、手動での添付よりもエラーが減少し、効率が向上します。

a new Outlook email is created with the PDF file as an attachment

注意: このマクロは、Microsoft Outlookがインストールされ、デフォルトのメールクライアントとして設定されている場合にのみ動作します。他のメールプログラムを使用している場合、このソリューションは適用されない可能性があります。

このVBAベースのアプローチは、完成したワークシートを定期的にPDF添付ファイルとして配布する必要がある場合に最も効率的であり、反復的な手作業を最小限に抑えます。制限点としては、Outlookへの依存、一度に複数のシートをまとめて処理できないこと、およびマクロを有効にする必要があることが挙げられます。より複雑なワークフロー(例えば、複数のワークシートを一括送信する場合や高度な自動化が必要な場合)には、Excelのアドインまたは組み込み機能の使用を検討してください。

代替ソリューション: 環境上、VBAマクロが適さない場合(マクロが制限されている場合など)、Excelの組み込みの「エクスポート」または「名前を付けて保存」機能を手動で使用してワークシートをPDFとして保存し、それをOutlookで添付して送信することができます。この方法は手順が増えますが、特別な権限やスクリプトの知識を必要とせず、普遍的に利用可能です。


ワークシートまたは複数のワークシートを個別のPDFファイルとして一度に簡単に保存する方法:

Kutools for Excelブック分割ユーティリティを使用すると、以下のデモに示すように、ワークシートまたは複数のワークシートを個別のPDFファイルとして簡単に一度に保存できます。今すぐダウンロードしてお試しください!(30日間無料トライアル)

save multiple worksheets as separate PDF files by kutools


関連記事:

最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

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