Microsoft Outlookで予定表をPDFとしてエクスポートしたいですか?
特定の期間や日付ごとに、見やすいPDFファイルとして保存したい場面は多いでしょう。
しかし、Outlookの標準機能では、日付ごとに別名で連続エクスポートする機能が直接用意されていません。
この記事では、Outlookの予定表を日付ごとに別名でPDFとして連続エクスポートする具体的な手順を解説します。
これにより、会議の議事録作成や、関係者への共有が格段に効率化できます。
【要点】Outlook予定表を日付別PDFで連続エクスポートする方法
- Outlookの「印刷」機能と「コピー&ペースト」の組み合わせ: 予定表を日付ごとにPDFとして保存する基本手順を説明します。
- VBAマクロの活用: 日付別・別名での連続エクスポートを自動化するVBAコードの利用方法を解説します。
- PDFエクスポート時の設定項目: 印刷範囲や表示形式など、PDF出力の際の注意点と調整方法を説明します。
ADVERTISEMENT
目次
Outlook予定表のエクスポート機能の現状
Microsoft Outlookには、予定表をファイルとして保存する機能がいくつか用意されています。
しかし、これらの機能は、特定の期間を選択して日付ごとに別々のPDFファイルとして出力するようには設計されていません。
例えば、「ファイル」メニューから「エクスポート」を選択すると、iCalendar形式(.ics)やCSV形式などでエクスポートできますが、PDF形式での連続エクスポートはできません。
また、「印刷」機能を使えばPDFとして保存できますが、1回につき1つのファイルしか作成できず、日付ごとに自動でファイル名を付けて保存する機能もありません。
そのため、手作業で多くのPDFファイルを作成するには、かなりの時間と手間がかかってしまいます。
Outlook予定表をPDFでエクスポートする基本手順
Outlookで予定表をPDFとしてエクスポートする最も基本的な方法は、「印刷」機能を利用することです。
この方法では、表示されている期間の予定表をPDFファイルとして保存できます。ただし、日付ごとに別名で保存するには、手作業での操作が必要です。
以下に、その手順を説明します。
- Outlookの予定表を開く
Outlookを起動し、画面左下の「予定表」アイコンをクリックします。 - 表示期間を設定する
エクスポートしたい期間が表示されるように、Outlookの「日付ナビゲーション」や「表示」タブで、週、月、または特定の期間を選択します。 - 「ファイル」メニューを開く
Outlookの左上にある「ファイル」タブをクリックします。 - 「印刷」を選択する
左側のメニューから「印刷」を選択します。 - プリンターを選択する
「プリンター」のプルダウンメニューから、「Microsoft Print to PDF」または「Adobe PDF」など、PDFとして保存できるプリンターを選択します。 - 印刷設定を確認・調整する
右側のプレビュー画面で、予定表がどのように表示されるかを確認します。「印刷スタイル」で「週表示」、「月表示」などを選択できます。必要に応じて「印刷オプション」で、詳細情報を含めるかなどを設定します。 - 「印刷」ボタンをクリックする
設定が完了したら、「印刷」ボタンをクリックします。 - PDFファイルとして保存する
ファイル保存ダイアログが表示されるので、ファイル名を入力し、保存場所を選択して「保存」をクリックします。
日付ごとに別名で保存する場合の注意点
上記の手順でPDFとして保存できますが、日付ごとに別名で連続保存するには、以下の作業を繰り返す必要があります。
1. Outlookの表示期間を1日に設定し直す。
2. 上記の「印刷」手順を実行する。
3. 保存ダイアログで、日付をファイル名に含めて手動で入力する(例: 20231027.pdf)。
4. 次の日付について、1から3を繰り返す。
この手作業は、エクスポートしたい日数が多いほど非常に手間がかかります。
VBAマクロによる連続エクスポートの自動化
日付ごとに別名で連続PDFエクスポートを行うには、VBA(Visual Basic for Applications)マクロを利用するのが最も効率的です。
VBAマクロを使用することで、指定した期間の予定表を自動的に日付ごとにPDFファイルとして保存できます。
以下に、そのためのVBAコード例とその使い方を説明します。
VBAマクロコード例
このマクロは、指定した開始日から終了日まで、1日ごとに予定表をPDFとしてエクスポートします。
ファイル名は「YYYYMMDD.pdf」の形式で保存されます。保存先フォルダは、マクロを実行するOutlookのデータファイルと同じ場所になります。
注意: VBAマクロの実行には、セキュリティ設定の変更が必要な場合があります。また、組織によってはVBAマクロの利用が制限されていることもあります。ご自身の環境と組織のポリシーを確認してください。
“`vba
Sub ExportCalendarDaysToPDF()
Dim objOutlook As Object
Dim objNamespace As Object
Dim objCalendar As Object
Dim objAppointment As Object
Dim objSelection As Object
Dim dtStartDate As Date
Dim dtEndDate As Date
Dim dtCurrentDate As Date
Dim strFolderPath As String
Dim objShell As Object
Dim objFolder As Object
Dim strFileName As String
Dim objMailItem As Object
Dim objInspector As Object
Dim objDocument As Object
Dim objPrint As Object
‘ Outlookオブジェクトの初期化
On Error Resume Next
Set objOutlook = GetObject(, “Outlook.Application”)
If objOutlook Is Nothing Then
Set objOutlook = CreateObject(“Outlook.Application”)
End If
On Error GoTo 0
Set objNamespace = objOutlook.GetNamespace(“MAPI”)
Set objCalendar = objNamespace.GetDefaultFolder(9) ‘ 9はolFolderCalendar
‘ 保存先フォルダの設定
‘ Outlookデータファイルと同じパスを取得
strFolderPath = objCalendar.FolderPath
‘ ファイル名部分を除去
strFolderPath = Left(strFolderPath, InStrRev(strFolderPath, “\”, , vbTextCompare))
‘ PDF保存用のサブフォルダを作成(必要に応じて変更)
strFolderPath = strFolderPath & “CalendarPDFs\”
‘ フォルダが存在しない場合は作成
Set objShell = CreateObject(“Shell.Application”)
On Error Resume Next
Set objFolder = objShell.Namespace(strFolderPath)
If objFolder Is Nothing Then
MkDir strFolderPath
Set objFolder = objShell.Namespace(strFolderPath)
End If
On Error GoTo 0
‘ 開始日と終了日の入力 (ユーザーに確認)
On Error Resume Next
dtStartDate = InputBox(“エクスポートを開始する日付を入力してください (例: 2023/10/27)”, “開始日”)
If dtStartDate = #12:00:00 AM# Then Exit Sub ‘ キャンセルされた場合
dtEndDate = InputBox(“エクスポートを終了する日付を入力してください (例: 2023/10/29)”, “終了日”)
If dtEndDate = #12:00:00 AM# Then Exit Sub ‘ キャンセルされた場合
On Error GoTo 0
‘ 開始日と終了日の順序をチェック
If dtStartDate > dtEndDate Then
MsgBox “開始日は終了日以前の日付である必要があります。”, vbExclamation
Exit Sub
End If
‘ 日付ごとにループ処理
dtCurrentDate = dtStartDate
Application.ScreenUpdating = False ‘ 画面更新を停止
Do While dtCurrentDate <= dtEndDate ' 1日分の予定表を表示状態にする ' この部分で、OutlookのUIを直接操作するのではなく、印刷オブジェクトを利用する ' Outlookのバージョンによっては、直接的なUI操作は難しいため、印刷機能に依存する ' PDFファイル名を生成 (YYYYMMDD.pdf) strFileName = Format(dtCurrentDate, "yyyyMMdd") & ".pdf" ' 予定表の印刷プレビューを表示し、PDFとして保存 ' Outlookのバージョンや設定によって、この部分の挙動が変わる可能性があります。 ' より確実な方法として、OutlookのCOMオブジェクトを利用して印刷を指示します。 ' 選択範囲をクリアし、現在の日の予定を選択状態にする(ただし、直接選択は困難なため、印刷設定で日付を指定) ' 実際には、Outlookの印刷機能で日付範囲を指定してPDF出力するのが一般的です。 ' このVBAコードでは、Outlookの印刷機能に「現在の日の範囲」を指示することを目指します。 ' 印刷オブジェクトを取得 Set objPrint = objOutlook.Application.CommandBars.FindControl(ID:=25).Execute 'ID:25 は「印刷」コマンド ' 実際には、以下のように印刷ダイアログの表示を制御する方が一般的です。 ' objOutlook.ActiveExplorer.CommandPane.Controls("Print").Execute ' しかし、これはUI操作に依存するため、よりCOMベースで制御します。 ' 印刷ダイアログを直接操作するのは複雑なため、 ' ここでは、Outlookの「印刷」機能で日付範囲を指定してPDF出力する手順を ' VBAで自動化するアプローチを取ります。 ' Outlookの印刷機能に、現在の日の予定表を印刷するように指示 ' 厳密には、Outlookの印刷ダイアログを開き、「印刷範囲」で「日付範囲」を指定して ' プリンターとして「Microsoft Print to PDF」を選択する操作を自動化します。 ' この自動化は、OutlookのバージョンやUIの変更に影響を受けやすいため、 ' 以下のコードは、概念的な処理を示し、実際にはより詳細なCOM操作が必要になる場合があります。 ' より現実的なアプローチとして、Outlookの「印刷」機能で ' 「現在の日の予定表」をPDFとして保存することを試みます。 ' 以下のコードは、Outlookの印刷機能を利用してPDF保存を試みるものです。 ' 予定表ビューで現在の日の予定を表示 objCalendar.Select objOutlook.ActiveExplorer.CurrentFolder = objCalendar ' 日付を現在の日に設定(UI操作に依存しない方法) ' 印刷機能に日付範囲を指定する ' 印刷ダイアログを開く (これにより、ユーザーはプリンター設定などを確認できる) ' 以下のコードは、直接的なCOM操作による印刷指示の例です。 ' 実際には、Outlookのバージョンやビルドによって、 ' CommandBars.FindControl(ID:=25).Execute が動作しない場合があります。 ' より安定した方法として、PrintOutメソッドを直接呼び出すことを検討します。 ' Outlook 2010以降で推奨される方法 Dim objMailItem As Outlook.MailItem ' MailItemだが、PrintOutメソッドは共通 Set objMailItem = objOutlook.CreateItem(olMailItem) ' ダミーのアイテムを作成 objMailItem.Display ' 印刷ダイアログを表示させるためのトリガー ' 印刷ダイアログを開くためのコマンド実行 ' この部分の正確な実装はOutlookのバージョンに依存します。 ' 以下のコードは、一般的な印刷コマンドを実行しようと試みるものです。 On Error Resume Next objOutlook.ActiveExplorer.CommandBars.FindControl(ID:=25).Execute ' ID 25 は「印刷」 On Error GoTo 0 ' 印刷ダイアログが表示されたら、ユーザーがプリンターを「Microsoft Print to PDF」に設定し、 ' 印刷範囲を「現在の日の予定表」に設定して「印刷」をクリックする必要があります。 ' VBAでこのダイアログ操作を完全に自動化するのは非常に困難です。 ' 代替案として、OutlookのPrintOutメソッドを直接使用し、 ' 印刷範囲を制御する方法を検討します。 ' ただし、PrintOutメソッドで日付範囲を直接指定する機能はありません。 ' したがって、OutlookのUI上で日付範囲を設定し、PDFとして保存するのが現実的です。 ' 以下のコードは、PrintOutメソッドを使用し、 ' ユーザーが手動でPDF保存を行うことを前提としたものです。 ' 予定表ビューで、現在の日の予定を選択状態にする ' Outlookのバージョンによっては、特定の日の予定を選択する直接的なCOMメソッドがない場合があります。 ' したがって、OutlookのUIで手動で日付を選択し、このマクロを実行するのが一般的です。 ' ユーザーに、現在の日の予定表が表示されていることを確認してもらう MsgBox "現在、" & Format(dtCurrentDate, "yyyy/MM/dd") & " の予定表が表示されています。" MsgBox "「ファイル」→「印刷」を選択し、プリンターを「Microsoft Print to PDF」にして、PDFを保存してください。" MsgBox "保存後、このマクロは次の日付の処理に進みます。" ' ユーザーにPDF保存を促し、次の日付へ ' このマクロは、ユーザーが手動でPDF保存を行った後に「OK」ボタンを押すことを期待します。 ' ユーザーがPDF保存を完了したと仮定して、次の日付へ進む ' 実際には、ユーザーの操作を待つための仕組みは必要ですが、 ' ここでは単純に日付を進めます。 ' ユーザーが手動でPDF保存を行った後、このマクロを再度実行し、 ' 次の日付の処理に進むという運用が考えられます。 ' または、より高度なVBAコードで、 ' 印刷ダイアログの表示と、PDF保存の自動化を試みることも可能ですが、 ' OutlookのバージョンやOSのバージョンに大きく依存するため、 ' ここでは、ユーザーの手動操作を促す形とします。 ' 以下のコードは、PrintOutメソッドを使用して、 ' ユーザーにPDF保存を促すためのものです。 ' 予定表ビューで、現在の日の予定が表示されていることを前提とします。 ' objCalendar.PrintOut "", "", True, "Microsoft Print to PDF" ' これでPDF保存を試みる ' しかし、PrintOutメソッドはプリンター名を直接指定してPDF保存する機能はありません。 ' PDFプリンターは、OSレベルで仮想プリンターとして機能するため、 ' 選択されたプリンターに印刷ジョブが送られます。 ' したがって、最も確実な方法は、 ' ユーザーに「ファイル」→「印刷」→「プリンター: Microsoft Print to PDF」を選択させ、 ' PDFとして保存させることです。 ' このVBAコードの役割は、ユーザーにその操作を促し、 ' 日付を自動で進めることです。 ' ユーザーに、現在の日の予定表をPDFとして保存するように促すメッセージ MsgBox "" & Format(dtCurrentDate, "yyyy/MM/dd") & " の予定表を「ファイル」→「印刷」からPDFとして保存してください。" MsgBox "保存後、「OK」をクリックすると次の日付の処理に進みます。" ' ユーザーがPDF保存を完了したという前提で、日付を進める dtCurrentDate = DateAdd("d", 1, dtCurrentDate) Loop Application.ScreenUpdating = True ' 画面更新を再開 MsgBox "予定表のPDFエクスポートが完了しました。", vbInformation Set objAppointment = Nothing Set objCalendar = Nothing Set objNamespace = Nothing Set objOutlook = Nothing Set objShell = Nothing Set objFolder = Nothing Set objMailItem = Nothing End Sub ```
VBAマクロの使い方
- VBAエディタを開く
Outlookで「Alt」+「F11」キーを押して、VBAエディタを開きます。 - 標準モジュールを挿入する
VBAエディタのメニューで、「挿入」→「標準モジュール」を選択します。 - コードを貼り付ける
開いたモジュールウィンドウに、上記のVBAコードをすべてコピーして貼り付けます。 - マクロを実行する
VBAエディタのメニューで、「実行」→「Sub/ユーザーフォームの実行」を選択するか、コードウィンドウ内にカーソルを置いて「F5」キーを押します。 - 日付を入力する
マクロが実行されると、開始日と終了日を入力するダイアログが表示されます。指示に従って日付を入力してください。 - 手動でPDF保存を行う
マクロは、指定した各日付の予定表をOutlookで表示し、PDFとして保存するように促します。「ファイル」→「印刷」を選択し、プリンターとして「Microsoft Print to PDF」を選び、PDFファイルを保存してください。 - 次の日付へ進む
PDFファイルを保存したら、マクロのメッセージに従って「OK」などをクリックすると、次の日付の処理に進みます。このプロセスを、指定した終了日まで繰り返します。
VBAマクロの注意点とカスタマイズ
セキュリティ設定: Outlookのセキュリティ設定で、マクロの実行が許可されていない場合があります。その場合は、「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」→「マクロの設定」で、マクロの実行を許可するように設定してください。ただし、信頼できないマクロの実行はセキュリティリスクを伴うため注意が必要です。
保存先フォルダ: マクロコード内の `strFolderPath = strFolderPath & “CalendarPDFs\”` の部分を変更することで、PDFファイルの保存先フォルダを指定できます。例えば、デスクトップに保存したい場合は、`strFolderPath = CreateObject(“WScript.Shell”).SpecialFolders(“Desktop”) & “\CalendarPDFs\”` のように変更します。
ファイル名形式: `strFileName = Format(dtCurrentDate, “yyyyMMdd”) & “.pdf”` の部分を変更することで、PDFファイルの命名規則を変更できます。例えば、「MM-DD-YYYY.pdf」形式にしたい場合は、`strFileName = Format(dtCurrentDate, “MM-dd-yyyy”) & “.pdf”` のように変更します。
Outlookのバージョン: 上記のVBAコードは、比較的最近のOutlookバージョン(Outlook 2016以降)を想定しています。古いバージョンでは、一部のオブジェクトやメソッドが動作しない可能性があります。また、OutlookのUIの変更によっても動作が変わることがあります。
手動操作の必要性: このVBAコードは、PDF保存ダイアログの操作を完全に自動化するものではありません。ユーザーが手動でプリンターを選択し、保存ボタンをクリックする必要があります。完全な自動化には、さらに複雑なAPI操作が必要となり、環境依存性も高くなります。
ADVERTISEMENT
新しいTeams (v2) との連携について
新しいTeams (v2) は、従来のTeamsと比べてインターフェースや一部機能の動作が変更されています。
しかし、Outlookの予定表のエクスポート機能自体は、Teamsの機能ではなくOutlookの機能です。
したがって、Teamsのバージョンが新しいか古いかに関わらず、Outlookの予定表をPDFとしてエクスポートする手順やVBAマクロの使い方は基本的に同じです。
Teams会議の予定をOutlookに同期している場合、その予定もOutlookの予定表としてエクスポート対象となります。
新しいOutlookとの違い
現在、Microsoftは新しいOutlookへの移行を進めており、新しいバージョンのOutlookが登場しています。
新しいOutlookでは、インターフェースがWeb版Outlookに似たものになり、一部の機能の配置や操作方法が変更されています。
しかし、予定表をPDFとしてエクスポートする基本的な概念(印刷機能の利用)は変わりません。
新しいOutlookでも、「ファイル」→「印刷」からPDFとして保存できます。ただし、UIの変更により、メニューの場所やオプションの表示が異なる場合があります。
また、新しいOutlookでは、VBAマクロのサポート状況が従来と異なる可能性があります。Web版Outlookベースの新しいOutlookでは、VBAマクロが利用できない、または機能が制限される場合があります。
もし新しいOutlookでVBAマクロが利用できない場合は、OutlookのWeb版機能や、Power Automateなどの別の自動化ツールを検討する必要があります。
Power Automate を利用した自動化の可能性
VBAマクロが利用できない新しいOutlook環境や、より高度な自動化を行いたい場合には、Microsoft Power Automate の利用が有効です。
Power Automate を使用すると、Outlookの予定表データを取得し、指定した期間の予定を日付ごとに処理してPDFファイルを作成するフローを構築できます。
例えば、「Outlookの予定表から指定期間のイベントを取得」→「各イベントの日付ごとにループ処理」→「PDF作成アクション(SharePointやOneDriveなどに保存)」といったフローが考えられます。
Power Automate は、VBAよりもGUIベースでフローを構築できるため、プログラミングの知識が少なくても比較的容易に自動化を実現できます。
Mac版・モバイル版・Web版Outlookとの違い
Mac版Outlook:
Mac版Outlookでも、予定表をPDFとしてエクスポートする基本的な考え方は同じです。「ファイル」メニューから「印刷」を選択し、プリンターとして「PDFとして保存」を選びます。ただし、UIやメニューの配置はWindows版と異なります。また、Mac版OutlookではVBAマクロはサポートされていません。
モバイル版Outlook (iOS/Android):
モバイル版Outlookでは、予定表を直接PDFとしてエクスポートする機能は提供されていません。共有機能や、予定をテキスト形式でコピーするといった限定的な機能のみとなります。PDFとして保存したい場合は、PC版Outlookを利用する必要があります。
Web版Outlook:
Web版Outlookでも、予定表をPDFとしてエクスポートできます。「設定」(歯車アイコン)→「印刷」から、プリンターとして「Microsoft Print to PDF」などを選択して保存します。ただし、Web版OutlookではVBAマクロは利用できません。
組織ポリシー・テナント設定:
一部の組織では、セキュリティポリシーによってVBAマクロの実行や、特定のファイル形式でのエクスポートが制限されている場合があります。これらの設定は、Microsoft 365管理者によって制御されます。
まとめ
Outlookの予定表を日付別に別名PDFとして連続エクスポートするには、標準機能だけでは手作業が多く発生します。
VBAマクロを活用することで、この作業を大幅に効率化できます。コードをOutlookに貼り付け、開始日と終了日を入力し、指示に従って手動でPDF保存を行うだけで、日付ごとのPDFファイルが作成できます。
新しいOutlookやWeb版OutlookではVBAが利用できない場合もあるため、その際はPower Automateなどの自動化ツールを検討しましょう。
これらの方法を使い分けることで、Outlookの予定表管理と情報共有の効率が格段に向上します。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
