Microsoft Access レポートを電子的に配布して、環境を保護してください。
通常、Microsoft® Access レポートは印刷して組織のユーザーや組織外のユーザーに配布します。しかし、レポートを印刷、コピー、および郵送すると経費がかかりすぎるため、その代わりとなる方法がないものでしょうか。電子メールで送信したり、Web サイトに投稿することができれば、アクセスが迅速で簡単になります。しかし、ユーザーがレポートを表示するときには、色、フォント、グラフ、およびその他の埋め込みオブジェクトをすべて元のレポートどおりに表示したいものです。また、使いやすいユーザー インターフェイスや公開されたオブジェクト モデルを使い、目的どおりに設計したいものです。さらに、ユーザーが Microsoft Access の完全なライセンスや実行時ライセンスを持っていなくても、Microsoft Access レポートを表示したり印刷したりできるようにする必要があります。
これらは困難な課題のようですが、問題はありません。レポート スナップショットと Snapshot Viewer を組み合わせれば、簡単に行うことができます。
レポート スナップショットと Snapshot Viewer とは
レポート スナップショットとは、エクスポート可能な Microsoft Access レポートであると考えてください。拡張子が .snp のスナップショット ファイルには、レポートの各ページのコピーが含まれます。それらのコピーには、2 次元のレイアウト、グラフィックス、およびほかの埋め込みオブジェクトが高い信頼性を持ちつつ維持されています。
Snapshot Viewer とは、エクスポート可能な印刷プレビューであると考えてください。このプログラムを使うと、レポート スナップショットの表示、印刷、および電子メールによる送信を行うことができます。Snapshot Viewer は、スタンドアロンの実行可能プログラム、Snapshot Viewer コントロール (Snapview.ocx)、ヘルプ ファイル、およびほかの関連ファイルより成ります。Snapshot Viewer コントロールを使うと、Microsoft Internet Explorer Version 3.0 以降、または Microsoft Word など、埋め込みオブジェクトをサポートしているアプリケーションや、Microsoft Visual Basic® for Applications (VBA) などの ActiveX® コントロールでレポート スナップショットを表示できます。

関連のある 2 つのレポートの情報を比較する
必要なソフトウェア環境
Microsoft Access 97 Service Release 1 以降、または Microsoft Access 2000
レポート スナップショットを作成する機能は、Microsoft Access 97 の Service Release 1 (SR-1) で最初に提供されたものであり、Microsoft Access 2000 でも利用できます。レポート スナップショットを作成するには、次のいずれかのバージョンの Access または Office が必要です。
- Microsoft Access 97 SR-1 以降
- Microsoft Office 97 Professional Edition SR-1 以降
- Microsoft Access 2000
- Microsoft Office 2000 Professional
- Microsoft Office 2000 Premium
Microsoft Access 97 を使用中で、SR-1 以降であるかどうかが不明な場合は、[ヘルプ] メニューの [バージョン情報] をクリックします。[Microsoft Access のバージョン情報] ダイアログ ボックスの上部に [SR-1] またはそれ以降であることが示される場合は、そのままレポート スナップショットを作成できます。それ以外の場合は、Office Online サイトで Office 97 の最新のサービス リリースのダウンロードに関する情報を参照してください。
Snapshot Viewer
レポート スナップショットを作成するためには、Microsoft Access 97 SR-1 以降が必要ですが、レポート スナップショットの表示、印刷、電子メールによる送信、または Web への発行のために、Microsoft Access のライセンスは必要ありません。必要なのは、Snapshot Viewer だけです。Snapshot Viewer は、次の場所からインストールできます。
-
Access 97 または Office 97 CD-ROM (SR-1 または SR-2) の ValuPack フォルダ内の Access サブフォルダ。自己解凍型ファイル Snpvw80.exe をダブルクリックしてください。
注意 Snpvw80.exe を実行すると、Snapshot Viewer 8.0 がインストールされます。この Snapshot Viewer は、Access 97 および Access 2000 で作成されたレポート スナップショットの表示と印刷をサポートしていますが、Snapshot Viewer 9.0 で行われた小規模な修正は含まれていません。次のリンク (または Access 2000 および Office 2000 のセットアップ) を使うと、Snapshot Viewer 9.0 をインストールできます。この Snapshot Viewer は、Access 97 および Access 2000 で作成されたレポート スナップショットをサポートしています。
-
Microsoft Office Developer Forum Web サイトの Access 製品情報
-
Access 2000 および Office 2000 では、レポート スナップショットを最初に作成または表示するときに、Snapshot Viewer 9.0 が自動的にインストールされます。
Snapshot Viewer は、Microsoft Windows® 95 以降または Microsoft Windows NT® 3.51 以降で動作します。Microsoft Windows NT version 3.51 を使用中の場合、Snapshot Viewer コントロール (Snapview.ocx) が動作するためには Service Pack 5 以降が必要です。
Microsoft Outlook および Microsoft Internet Explorer 3.0
電子メールを使ってレポート スナップショットを送信するためには、Microsoft Outlook など、MAPI (Messaging Application Programming Interface) をサポートしている電子メール クライアントも必要です。WWW でレポート スナップショットを表示するには、Microsoft Internet Explorer 3.0 以降など、ActiveX コントロールをサポートしている Web ブラウザも必要です。
レポート スナップショットを作成する
Microsoft Access 97 でレポート スナップショットを作成するには
- データベース ウィンドウの [レポート] タブで、エクスポートするレポート名をクリックし、[ファイル] メニューの [名前を付けて保存/エクスポート] をクリックします。
- [名前を付けて保存] ダイアログ ボックスの [外部ファイルまたはデータベース] をクリックし、[OK] をクリックします。
- [ファイルの種類] ボックスの [Snapshot 形式 (*.snp)] をクリックします。
- [保存先] ボックスの右にある矢印をクリックし、エクスポート先のドライブまたはフォルダを選択します。
- [ファイル名] ボックスにファイル名を入力します。
- 必要な場合は、[自動起動] チェック ボックスをオンにし、Snapshot Viewer で結果を表示します。次に、[エクスポート] をクリックします。
Microsoft Access 2000 でレポート スナップショットを作成するには
- データベース ウィンドウの [レポート] ウィンドウで、エクスポートするレポート名をクリックし、[ファイル] メニューの [エクスポート] をクリックします。
- [ファイルの種類] ボックスの [Snapshot 形式 (*.snp)] をクリックします。
- [保存先] ボックスの右にある矢印をクリックし、エクスポート先のドライブまたはフォルダを選択します。
- [ファイル名] ボックスにファイル名を入力します。
- 必要な場合は、[自動起動] チェック ボックスをオンにし、結果を Snapshot Viewer で表示します。次に、[保存] をクリックします。
レポート スナップショットは、レポート内のテーブルやクエリに基づいています。これには、現在の "OrderBy/並べ替え" プロパティまたはフィルタ プロパティで定義されている並べ替えやフィルタが含まれます。レポートがパラメータ クエリーに基づいている場合は、最初にパラメータ値を入力すると、結果が出力されます。
Snapshot Viewer でレポート スナップショットを開き、表示する
レポート スナップショットを開くには、Windows Explorer でレポート スナップショットをダブルクリックします。

レポート スナップショットを開くと、次の操作を行うことができます。

ナビゲーション ボタンをクリックして、ページ間を移動できます。
ページ番号を入力して、レポートの特定のページに移動できます。
レポート スナップショットをクリックして、現在の倍率と [ウィンドウに合わせる] を切り替えることができます。
レポートを印刷するには、[印刷] をクリックします。
ほかの倍率でレポートを表示するには、マウスの右ボタンでレポート スナップショットをクリックし、ショートカット メニューの [ズーム] をポイントします。次に、[ウィンドウに合わせる]、[ページ幅に合わせる]、または倍率の割合をクリックします。[ページ幅に合わせる] をクリックすると、ページの幅に合わせて倍率が調整され、ウィンドウに表示されます。レポートの向きが縦の場合は、レポートの幅 (ページの短い辺) に合わせてウィンドウに表示されます。レポートの向きが横の場合は、レポートの高さ (ページの短い辺) に合わせてウィンドウに表示されます。
これで、ユーザーは Microsoft Access レポートをオンラインですばやく簡単に表示できます。また、レポートで必要なページだけを印刷できます。ページ番号は、[レポート スナップショット ウィンドウの下部にあるボックスに表示されます。グラフやピクチャなど、色やイメージが含まれていると印刷に長い時間がかかるので、そのような場合にページを選択して印刷すると特に便利です。
レポート スナップショットを開くことに関するトラブルシューティング
- ファイルに正しい拡張子 (.snp) が付けられていて、レポート スナップショット形式であるかどうかを確認してください。そのためには、Windows Explorer で、マウスの右ボタンでファイルをダブルクリックし、ショートカット メニューの [プロパティ] をクリックします。次に、[種類] に [Snapshot File] と表示されるかどうかを確認します。
- ファイルおよびそのフォルダに対する読み取り権限があるかどうか、確認してください。
電子メールでレポート スナップショットを送信する
埋め込みアイコンとしてレポート スナップショットを送信する
レポート スナップショットは、電子メールでアイコンとして送信できます。そのためには、Snapshot Viewer で、[ファイル] メニューの [送信] をクリックします。

新しい電子メール メッセージが開かれ、レポート スナップショットが電子メール メッセージにアイコンとして埋め込まれます。
ユーザーが Snapshot Viewer を持っていないことを想定して、Snapshot Viewer ダウンロード ページへのリンクを含めます。
Microsoft Access 97 および Access 2000では、データベース ウィンドウでレポートを選択し、[ファイル] メニューの [送信] をクリックしても、レポート スナップショットを電子メールでアイコンとして送信できます。さらに、"SendObject/オブジェクトの送信" アクションを使って、処理を自動化する方法もあります。次の表は、その例を示しています。
Send Snapshot マクロ
| アクション |
引数 |
値 |
| SendObject/オブジェクトの送信 |
Object Type/オブジェクトの種類 |
Report/レポート |
|
Object Name/オブジェクト名 |
四半期売上一覧 |
|
Output Format/出力ファイル形式 |
Snapshot 形式 |
|
To/宛先 |
Northwind Traders 社員; Northwind Traders 株主 |
|
Cc |
|
|
Bcc |
|
|
Subject/件名 |
四半期売上レポート |
|
Message Text/メッセージ |
|
|
Edit Message/メッセージの編集 |
No/いいえ |
注意 上の例では、Microsoft Access の Northwind Traders サンプル データベースを使っています。このデータベースがコンピュータにインストールされていない場合は、Microsoft Access ヘルプで「ノースウィンド データベースを開く」を検索してください。
電子メール プログラムの設定によっては、自動的にレポート スナップショットを送信できないことがあります。これは、電子メール プログラムでログオンとユーザー情報の入力が必要になる場合です。たとえば、Microsoft Outlook のインストールでは、ログオン時にユーザー プロファイルを入力するように設定できます。そのため、電子メール プログラムのインストール内容を変更しなければならない場合があります。
埋め込みオブジェクトとしてスナップショットを送信する
埋め込みオブジェクトをサポートしている電子メール プログラムを使うと、レポート スナップショットをオブジェクトして電子メールに埋め込むことができます。たとえば、Microsoft Outlook では、[挿入] メニューの [オブジェクト] をクリックし、[ファイルから] をクリックします。次に、[ファイル] ボックスにレポート スナップショットファイル名を入力するか、または [参照] をクリックし、ファイルを検索します。埋め込みオブジェクトをサポートするためには、[Microsoft Outlook リッチ テキスト形式] を使ってメッセージを作成する必要があります。
電子メールの受信者が電子メール メッセージを読むときは、埋め込まれたレポート スナップショットをダブルクリックすると、Snapshot Viewer が電子メール プログラム内で起動し、レポートを表示できます。

注意
- レポート スナップショットは、Microsoft Access または Snapshot Viewer からはアイコンとしてのみ埋め込むことができ、埋め込みオブジェクトとして埋め込むことはできません。
- レポート スナップショット ファイルをオブジェクトとして埋め込むと、Windows 95 では Windows NT に比べて電子メール メッセージのサイズが大きくなります。また、電子メール プログラムのサイズ制限によって、メッセージを送信できないことがあります。このサイズの違いが発生するのは、2 つのオペレーティング システムが Windows メタファイルをサポートする方法に違いがあるためです。電子メール メッセージのサイズを小さくするためのヒントについては、(C:\Program Files\Snapshot Viewer フォルダにある) Snapshot Viewer Readme.txt ファイルを参照してください。
WWW で定期的にレポート スナップショットを配布する
週単位のメモ、月単位の営業報告、四半期単位の財務諸表など、大量のレポートを定期的に配布する場合は、WWW を一種の "物流センター" として使うことができます。
レポート スナップショットを自動的に作成する
レポートの作成を自動化するためには、Microsoft Access 97 または 2000 で "OutputTo/出力" アクションを使用するマクロを (出力するレポートごとに) 作成します。このマクロは、各レポートをレポート スナップショットとしてレポートの発行先の Web サーバーにエクスポートします。次の表は、その例を示しています。
Create Snapshot マクロ
| アクション |
引数 |
値 |
| OutputTo/出力 |
Object Type/オブジェクトの種類 |
Report/レポート |
|
Object Name/オブジェクト名 |
カタログ |
|
Output Format/出力ファイル形式 |
Snapshot 形式 |
|
Output File/出力ファイル |
\\Website\Inetpub\wwwroot\Webreports\Catalog.snp * |
|
Auto Start/自動起動 |
No/いいえ |
* WWW サーバーのフォルダに直接出力されます。
レポート スナップショットを発行する
レポート スナップショットを作成した後は、WWW に発行するために次の 2 つの方法があります。
- 各レポート スナップショットへのリンクを作成します。
Web ページで HTML (HyperText Markup Language) のアンカー タグを使います。次のコードは、その例を示しています。
<A HREF="http://Website/Webreports/catalog.snp">カタログ レポート</A>
ユーザーがリンクをクリックすると、Microsoft Internet Explorer のウィンドウ内に Snapshot Viewer が起動し、レポート スナップショットが表示されます。ほかのブラウザでは、別の Snapshot Viewer ウィンドウでレポート スナップショットが開きます。どちらの場合も、同じコンピュータに Snapshot Viewer がレポートのブラウザとしてインストールされている必要があります。そのため、ユーザーが Snapshot Viewer をインストールしていないことを想定して、Web ページに Snapshot Viewer ソフトウェア ダウンロード ページへの追加のリンクを提供することをお勧めします。

レポート スナップショットのすべてのページを印刷するには、Microsoft Internet Explorer の [印刷] コマンドではなく、Snapshot Viewer の [印刷] ボタンを使うようにユーザーに伝えてください。Internet Explorer のコマンドを使うと、現在の Web ページしか印刷されません。
- Web ページに Snapshot Viewer コントロールを埋め込みます。
HTML の Object タグを使います。次のコードは、その例を示しています。
<OBJECT ID="SnapshotViewer" WIDTH=640 HEIGHT=480
CLASSID="CLSID:F0E42D60-368C-11D0-AD81-00A0C90DC8D9">
<PARAM NAME="_ExtentX" value="/japan16722">
<PARAM NAME="_ExtentY" value="/japan11774">
<PARAM NAME="_Version" value="/japan65536">
<PARAM NAME="SnapshotPath"
value="/japanhttp://Website/Webreports/catalog.snp">
<PARAM NAME="Zoom" value="/japan0">
<PARAM NAME="AllowContextMenu" value="/japan-1">
<PARAM NAME="ShowNavigationButtons" value="/japan-1">
</OBJECT>
Microsoft FrontPage® などの Web ページ エディタを使って Snapshot Viewer コントロールを埋め込むことができます。しかし、この方法を使うことができるのは、自分とユーザーが ActiveX コントロールをサポートするブラウザ (Microsoft Internet Explorer 3.0 以降など) を実行している場合だけです。Snapshot Viewer を持っていないユーザーが Snapshot Viewer コントロールを自動的にダウンロードし、インストールできるようにするには、企業イントラネットの Web サーバーに Snapview.ocx ファイルをコピーし、HTML Object タグの Codebase 属性を使います。次のコードは、その例を示しています。
<OBJECT ID="SnapshotViewer" WIDTH=640 HEIGHT=480
CLASSID="CLSID:F0E42D60-368C-11D0-AD81-00A0C90DC8D9"
CODEBASE="http://Website/LocalControls/Snapview.ocx">
レポート スナップショットの作成と発行のスケジュールを設定する
この手順全体のスケジュールを定期的に設定するためには、Windows NT AT、Microsoft Plus! システム エージェント、Windows 98 タスク スケジューラなどのスケジュール管理プログラムを使うことができます。たとえば、次のようなバッチ ファイルを作成して Create Snapshot マクロを実行できます。
次に、システム エージェント (SysAgent.exe) を使ってバッチ ファイルを実行し、定期的に処理を行います。

Web ページからレポート スナップショットを開くことに関するトラブルシューティング
Web ページからレポート スナップショットを開こうとする場合、レポート スナップショットのダウンロード中に、接続やタイムアウトの問題が発生することがあります。その場合は、Web ページをもう一度表示するか、または Web ブラウザを再起動し、問題が解決されるかどうかを確認してください
ユーザー設定: 2 つのサンプル アプリケーション
このアプリケーションのソース コード全体を表示するには、ここをクリックしてください。
ある企業では、本社の Microsoft Access データベースに顧客データと営業データを維持しているとします。これまで、ホーム オフィスにいる社員がレポートを見る必要があるときは、レポートを印刷して社内便で送ってもらう必要がありました。また、出張中の営業社員がレポートを必要になったときは、電話または電子メールで要求を伝え、ファックスでレポートを送信してもらう必要がありました。しかし、現在では、レポート スナップショットと Snapshot Viewer の利点をすべて活用できます。次のサンプル アプリケーションでは、レポート スナップショットの表示と配布をユーザー設定し、企業独自のニーズに対応できることを示しています。
SnapshotBrowser サンプル アプリケーション: ネットワーク サーバー上でレポートを表示、印刷する
ホーム オフィスにいる社員がすべてのレポートをオンラインで利用できるようにするとします。どの社員も会社の Microsoft Access データベースに直接アクセスすることはできませんが、ファイルの保存と交換を行うため、社員が使用できる共有ネットワーク サーバーがあります。そのため、このネットワーク サーバーに Reports という名前のフォルダを作成し、月ごとにサブフォルダを作成します。次に、ある月に作成される各レポートを、レポート スナップショットとして該当のサブフォルダに保存します。最後に、SnapshotBrowser アプリケーションを実行し、Reports フォルダの任意の月のレポート スナップショットの表示または印刷を行うようにユーザーに指示します。
SnapshotBrowser サンプル アプリケーション

Microsoft Visual Basic アプリケーションである Snapshot Browser は、Snapshot Viewer ActiveX コントロール (Snapview.ocx) および TreeView コントロールが含まれる、1 つのフォームを使います。TreeView コントロールは、ネットワーク サーバーの Reports フォルダに保存されたスナップショット ファイルを参照するために使われます。
このアプリケーションが起動すると、TreeView コントロールがロードされ、レポート スナップショットが含まれている月ごとのサブフォルダが表示されます。次に、クラス モジュールを使って月のサブフォルダとサブフォルダに含まれているレポートが表示されます。ユーザー設定関数によって、Months コレクション オブジェクトに各月のサブフォルダの Month オブジェクトが埋められます。次に、プロシージャは Reports コレクションに月のサブフォルダで見つかったスナップショット ファイルの Report オブジェクトを埋めます (これらはユーザー設定オブジェクトおよびコレクションであり、Microsoft Access の組み込みオブジェクトやコレクションとは関連がありません)。次のコードは、Months コレクションを Month オブジェクトで埋めるために使われます。
Dim strFolderName As String
Dim objMonth As New Month
' gstrFolderPath には、レポート スナップショットの
' 保存先であるネットワーク サーバーへの
' UNC パスが含まれている必要があります。
gstrFolderPath = ""
' Reports フォルダ以下の最初の月のサブフォルダを
' 検索します。
strFolderName = Dir(gstrFolderPath & "*", vbDirectory)
' 見つかった月のサブフォルダをそれぞれ
' Months コレクションに追加します。
If Len(strFolderName) > 0 Then
Do Until strFolderName = ""
If strFolderName <> "." _
And strFolderName <> ".." Then
Set objMonth = colMonths.Add(strFolderName, _
strFolderName)
End If
strFolderName = Dir
Loop
End If
Months コレクションに Month オブジェクトが埋められると、FillReports 関数が呼び出され、各 Month オブジェクトの Report コレクションが、見つかったレポートの Report オブジェクトで埋められます。
Sub FillReports()
' このプロシージャは、月のサブフォルダに含まれている
' すべてのスナップショット ファイルを含む Reports コレクション
' を追加します。
Dim strFileName As String
Dim objMonth As Month
Dim objRpt As New Report
For Each objMonth In colMonths
Set colRpts = New Reports
strFileName = Dir(gstrFolderPath & _
objMonth.Name & "\*.snp", vbNormal)
' Month サブフォルダに含まれているスナップショット ファイル
' ごとに、スナップショットを Reports コレクションに追加します。
If Len(strFileName) > 0 Then
Do Until strFileName = ""
With objRpt
.Name = strFileName
Set .Parent = objMonth
End With
' このスナップショット ファイルをこの Month オブジェクト
' に関連する Reports コレクションに追加します。
colRpts.Add objRpt.Name, objRpt.Name
strFileName = Dir
Loop
End If
Set objMonth.Reports = colRpts
Set colRpts = Nothing
Next objMonth
End Sub
注意 上のサンプル コードの変数 colMonths および colReports は、標準モジュールで宣言されるパブリック変数です。
ユーザーが TreeView コントロールから月を選択すると、そのサブフォルダに含まれているすべてのレポート スナップショット ファイルがアプリケーションのメイン フォームの左のペインに表示されます。また、ユーザーが TreeView コントロールからレポート スナップショットを選択すると、Snapshot Viewer コントロールを使ってレポートが表示されます。Snapshot Viewer ActiveX コントロールで表示するスナップショット ファイルを指定するには、SnapshotPath プロパティを使います。SnapshotBrowser サンプル アプリケーションでは、次のコードを使ってこのプロパティを設定しています。
SnapshotViewer1.SnapshotPath = gstrFolderPath & _
Node.Parent.Text & "\" & Node.Text
変数 gstrFolderPath には、メイン Reports フォルダへの UNC パスが含まれています。Node.Parent.Text には、月のサブフォルダ名と、レポート スナップショット ファイル名の Node.Text が含まれます。
注意 このサンプル アプリケーションを実際に使う場合は、必ずこのサンプルのとおりに Reports フォルダおよび Months フォルダを設定する必要があります。さらに、Module1 の Declarations セクション内にある変数 gstrFolderPath を、ネットワーク サーバーの Reports フォルダへの UNC パスに変更する必要があります。
Snapshot Viewer コントロールは、SnapshotViewer オブジェクトを表示します。このオブジェクトには、コントロールのすべての要素をプログラムによって処理するためにユーザーが使うことができるプロパティ、メソッド、およびイベントが含まれています。たとえば、次のサブルーチンは、[Print Report] ボタンを使って Snapshot Viewer コントロールの PrintSnapshot メソッドを呼び出し、現在コントロールに表示されているレポートを印刷する方法を示しています。
Private Sub cmdPrint_Click()
Const conNoCurrentReport as Integer = 2502
On Error Resume Next
SnapshotViewer1.PrintSnapshot True
If Err = conNoCurrentReport Then
MsgBox "Please select a report to print."
End If
End Sub
Snapshot Viewer コントロールのプログラミングの詳細については、Snapshot Viewer に添付されるヘルプ ファイルを参照してください。このヘルプ ファイルでは、Snapshot Viewer コントロールのすべてのプロパティ、メソッド、およびイベントに関する言語リファレンス トピックが提供されます。
AutomatedMailer サンプル アプリケーション: 電子メールを使って複数のレポート スナップショットに 24 時間いつでもリモート アクセスする
このアプリケーションのソース コード全体を表示するには、ここをクリックしてください。
次に、レポート スナップショットを自動的に送信する郵便機能アプリケーションを作成します。オフィスから離れている営業社員は、電子メールを送信してレポートを要求すると、要求したレポートが埋め込まれた返信メッセージを自動的に受け取ることができるようになります。AutomatedMailer サンプル アプリケーションでは、このような電子メール メッセージの返信を自動化し、要求されたスナップショット ファイルを自動的に提供することができます。スナップショット ファイルが含まれた返信メッセージを自動的に受け取るには、ユーザーはメッセージの件名に "MailReport" という単語を含め、電子メール メッセージを作成します。さらに、次のようにメッセージの本文でカンマ区切りの一覧を使って、必要なレポートの名前を指定します。"Reports: reportname1, reportname2, reportnameN" (例: "Reports: 週間メモ, 四半期報告, 売上順得意先")。また、次のようにその保存先の月のサブフォルダ名を指定します。"Month: monthname" (例: "Month: September")

注意 電子メール メッセージの本文がコードによって解析され、要求された月とレポートの名前が判定されます。メッセージのほかのテキストは無視されます。
このサンプル アプリケーションがコンピュータで正しく動作するようにするには、次の 5 つの手順を完了する必要があります。
-
「SnapshotBrowser サンプル アプリケーション: ネットワーク サーバー上でレポートを表示、印刷する」で説明したディレクトリ構造にスナップショット ファイルを保存します。
-
MailReport という名前のフォルダを作成します。
-
Outlook のルールを作成し、レポートを要求する電子メールを MailReport フォルダに配置するようにします。Outlook でルールを作成するには、[ツール] メニューの [自動仕訳ウィザード] または [受信トレイ アシスタント] を使います。

自動仕訳ウィザードには、電子メールを MailReport フォルダに送るように作成されたルールが表示されます。
-
Reports フォルダが含まれているネットワーク サーバーへの UNC パスを指定します。この情報は、[txtRptDirectoryPath] ボックスの Text プロパティに入力します。
注意 AutomatedMailer サンプル アプリケーションでは、プログラムの実行中にユーザーがこのパス設定を指定または変更できるようにするフォームも使われます。
-
Microsoft Outlook 8.0 Object japan/library への参照を設定します。
Visual Basic プログラムであるサンプル アプリケーションは、レポートを要求する電子メールが正しい形式で送信された場合に、自動的に返信メッセージを送信します。そのために、定期的な間隔でコードを呼び出し、MailReport フォルダに新しい電子メールがあるかどうかをチェックします。MailReport フォルダに未読のメッセージを見つけると、メッセージの本文のテキストを解析し、指定された月とレポートを判定します。次に、返信メッセージを作成し、要求されたレポートを一覧にします。また、指定された月のサブフォルダに各ファイルが見つかったかどうかを示し、要求されたレポート ファイルを電子メール メッセージに添付します。最後に、レポートを要求したユーザー宛てに返信の電子メールを送信します。
AutomatedMailer アプリケーションには、Timer コントロールが含まれている 1 つのフォームがあります。MailReport フォルダにある新しい電子メールをチェックする間隔は、Timer コントロールの Interval プロパティを使ってミリ秒単位で指定します。サンプル アプリケーションでは、アプリケーションの実行中に、この Interval プロパティの変更方法がユーザーに示されます。次のコードは、新しい電子メールをチェックするためにアプリケーションで使用されるユーザー設定関数を示しています。
Private Function CheckForMail(objColl As Collection) As Boolean
' このプロシージャは、MailReport フォルダをチェックし、
' 未読の MailItem オブジェクトがあるかどうかを判定します。
' 未読の MailItem オブジェクトは、後の処理のため、グローバル
' objColl コレクションに追加されます。
Dim objOutlook As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objFolder As Object
Dim objItems As Outlook.Items
Dim obj As Object
' Outlook オブジェクト変数を初期化します。
Set objOutlook = New Outlook.Application
Set objNS = objOutlook.GetNamespace("MAPI")
For Each objFolder In objNS.Folders
If InStr(objFolder.Name, "Mail") > 0 Then
' "MailReport" フォルダにある未読の MailItem
' オブジェクトをすべて見つけます。
Set objItems = objFolder.Folders("MailReport").Items. _
Restrict("[UnRead] = True")
If objItems.Count > 0 Then
For Each obj In objItems
objColl.Add obj
Next obj
CheckForMail = True
Else
CheckForMail = False
Exit Function
End If
End If
Next objFolder
End Function
MailReport フォルダに未読の電子メール メッセージがあると、返信メッセージの作成と送信のために、ユーザー設定関数 ReplyToMail が使われます。関数 ReplyToMail は、MailItem オブジェクトの Reply メソッドを使って返信メッセージを作成します。次に、元の電子メール メッセージの本文を解析し、指定された月とレポートの名前を判定します。この情報は、返信メッセージにレポート スナップショットを添付するために使われます。要求されたレポート名を判定するために、元のメッセージの本文を解析し、各レポート名を抽出し、次のコードを使って配列にレポート名を配置します。
arrRequestedRpts = ParseMail(strBody)
関数 ParseMail は、次のコードを使って配列にレポート名を配置し、その配列を ReplyToMail プロシージャの変数 arrRequestedRpts に返します。
Function ParseMail(strBody As String) As Variant
' このプロシージャは、電子メール メッセージの本文を
' 解析し、要求されたレポート スナップショット ファイルの
' 名前を取得します。
Dim strTemp As String
Dim strTempRpt As String
Dim intCntr As Integer
Dim arrRptNames() As String
On Error Resume Next
' メッセージの本文でレポート名を探します。
If InStr(strBody, "Reports:") <> 0 Then
strTemp = Mid(strBody, InStr(strBody, "Reports: ") + 8)
Else
ParseMail = "Incorrect report request format detected."
Exit Function
End If
Do
' 配列サイズを大きくし、見つかったレポートを
' 処理できるようにします。- 累積
ReDim Preserve arrRptNames(intCntr)
strTempRpt = strTemp
' 複数のレポートが要求されたかどうかを判定します。
If InStr(strTempRpt, ",") > 0 Then
' レポート名を配列に追加します。
arrRptNames(intCntr) = Trim(Left(strTempRpt, _
InStr(strTempRpt,",") - 1))
Else
arrRptNames(intCntr) = Trim(strTempRpt)
ParseMail = arrRptNames()
Exit Function
End If
intCntr = intCntr + 1
strTemp = Mid(strTemp, InStr(strTemp, ",") + 1)
Loop Until InStr(strTemp, ",") = 0
ReDim Preserve arrRptNames(intCntr)
' 一覧の最後のレポート名を配列に追加します。
arrRptNames(intCntr) = Trim(Left(strTemp, _
InStr(strTemp, ".snp") + 3))
ParseMail = arrRptNames()
End Function
レポート名の配列が埋められると、次のコードによって各レポートが返信の電子メール メッセージに添付されます。指定されたファイル フォルダでスナップショット ファイルを見つけるときにエラーが発生した場合の、電子メール メッセージの変更方法に注意してください。
' 要求された各レポートを返信メッセージに添付します。
For Each strItem In arrRequestedRpts
.Attachments.Add conRptPath & strMonth & "\" & strItem
If Err = conFileNotfoundError Then
' 不正なレポート名を示すテキスト
.Body = .Body & vbCrLf & strItem & _
" (ERROR: File Not Found)"
Err = 0
ElseIf Err = conInvalidFilePath Then
' 不正なファイル パス エラーを示すテキスト
.Body = .Body & vbCrLf & strItem _
& " (ERROR: Invalid File Path Submitted)"
Err = 0
ElseIf Err = 0 Then
' 添付されたファイル名をメッセージ本文に追加します。
.Body = .Body & vbCrLf & strItem
End If
DoEvents
Next strItem
返信メッセージが作成されると、MailItem の Send メソッドを使ってそのメッセージが送信され、MailItem の Delete メソッドを使って元のメッセージが MailReport フォルダから削除されます。
要約
AutomatedMailer サンプル アプリケーションでは、次の手順を使って、レポート スナップショットを要求する電子メール メッセージに対する返信メッセージの作成と送信を自動化する方法を示しています。