Microsoft Office Online
Office Online にサインイン (サインインとは?) | サインイン

 
 
Microsoft Office Access
検索
検索
 
以前のバージョン: (c) Microsoft
以前のバージョンの製品情報
更新プログラムの確認: (c) Microsoft
Office のダウンロード
 
 
 
注意: このページはサポートされていない Web ブラウザで表示されています。この Web サイトは、Microsoft Internet Explorer 6.0 以降、Firefox 1.5、または Netscape Navigator 8.0 以降を使用すると、正しく表示されます。 サポートされているブラウザの詳細情報

印刷用ページの表示印刷用ページの表示 ブックマークを設定して共有共有
Microsoft Access 97 または Access 2000 のレポート スナップショットと Snapshot Viewer を使用する
 

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 つのスナップショット ウィンドウを表示した Snapshot Viewer

関連のある 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 でレポート スナップショットを作成するには

  1. データベース ウィンドウの [レポート] タブで、エクスポートするレポート名をクリックし、[ファイル] メニューの [名前を付けて保存/エクスポート] をクリックします。
  2. [名前を付けて保存] ダイアログ ボックスの [外部ファイルまたはデータベース] をクリックし、[OK] をクリックします。
  3. [ファイルの種類] ボックスの [Snapshot 形式 (*.snp)] をクリックします。
  4. [保存先] ボックスの右にある矢印をクリックし、エクスポート先のドライブまたはフォルダを選択します。
  5. [ファイル名] ボックスにファイル名を入力します。
  6. 必要な場合は、[自動起動] チェック ボックスをオンにし、Snapshot Viewer で結果を表示します。次に、[エクスポート] をクリックします。

Microsoft Access 2000 でレポート スナップショットを作成するには

  1. データベース ウィンドウの [レポート] ウィンドウで、エクスポートするレポート名をクリックし、[ファイル] メニューの [エクスポート] をクリックします。
  2. [ファイルの種類] ボックスの [Snapshot 形式 (*.snp)] をクリックします。
  3. [保存先] ボックスの右にある矢印をクリックし、エクスポート先のドライブまたはフォルダを選択します。
  4. [ファイル名] ボックスにファイル名を入力します。
  5. 必要な場合は、[自動起動] チェック ボックスをオンにし、結果を Snapshot Viewer で表示します。次に、[保存] をクリックします。

レポート スナップショットは、レポート内のテーブルやクエリに基づいています。これには、現在の "OrderBy/並べ替え" プロパティまたはフィルタ プロパティで定義されている並べ替えやフィルタが含まれます。レポートがパラメータ クエリーに基づいている場合は、最初にパラメータ値を入力すると、結果が出力されます。

Snapshot Viewer でレポート スナップショットを開き、表示する

レポート スナップショットを開くには、Windows Explorer でレポート スナップショットをダブルクリックします。

Windows Explorer

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

Snapshot Viewer で表示したレポート スナップショット

Aナビゲーション ボタンをクリックして、ページ間を移動できます。

Bページ番号を入力して、レポートの特定のページに移動できます。

Cレポート スナップショットをクリックして、現在の倍率と [ウィンドウに合わせる] を切り替えることができます。

Dレポートを印刷するには、[印刷] をクリックします。

ほかの倍率でレポートを表示するには、マウスの右ボタンでレポート スナップショットをクリックし、ショートカット メニューの [ズーム] をポイントします。次に、[ウィンドウに合わせる]、[ページ幅に合わせる]、または倍率の割合をクリックします。[ページ幅に合わせる] をクリックすると、ページの幅に合わせて倍率が調整され、ウィンドウに表示されます。レポートの向きが縦の場合は、レポートの幅 (ページの短い辺) に合わせてウィンドウに表示されます。レポートの向きが横の場合は、レポートの高さ (ページの短い辺) に合わせてウィンドウに表示されます。

これで、ユーザーは Microsoft Access レポートをオンラインですばやく簡単に表示できます。また、レポートで必要なページだけを印刷できます。ページ番号は、[レポート スナップショット ウィンドウの下部にあるボックスに表示されます。グラフやピクチャなど、色やイメージが含まれていると印刷に長い時間がかかるので、そのような場合にページを選択して印刷すると特に便利です。

レポート スナップショットを開くことに関するトラブルシューティング

  • ファイルに正しい拡張子 (.snp) が付けられていて、レポート スナップショット形式であるかどうかを確認してください。そのためには、Windows Explorer で、マウスの右ボタンでファイルをダブルクリックし、ショートカット メニューの [プロパティ] をクリックします。次に、[種類] に [Snapshot File] と表示されるかどうかを確認します。
  • ファイルおよびそのフォルダに対する読み取り権限があるかどうか、確認してください。

電子メールでレポート スナップショットを送信する

埋め込みアイコンとしてレポート スナップショットを送信する

レポート スナップショットは、電子メールでアイコンとして送信できます。そのためには、Snapshot Viewer で、[ファイル] メニューの [送信] をクリックします。

Outlook の電子メール メッセージに埋め込んだアイコンとリンク

A新しい電子メール メッセージが開かれ、レポート スナップショットが電子メール メッセージにアイコンとして埋め込まれます。

Bユーザーが 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 つの方法があります。

  1. 各レポート スナップショットへのリンクを作成します。

    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 ソフトウェア ダウンロード ページへの追加のリンクを提供することをお勧めします。

    Web でのレポート スナップショット - Web ブラウザ内での表示

    Aレポート スナップショットのすべてのページを印刷するには、Microsoft Internet Explorer の [印刷] コマンドではなく、Snapshot Viewer の [印刷] ボタンを使うようにユーザーに伝えてください。Internet Explorer のコマンドを使うと、現在の Web ページしか印刷されません。

  2. 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 マクロを実行できます。

  • バッチ ファイル: Webpost.bat
    PATH = "C:\Program Files\Microsoft Office\Office\;C:\Windows\Command"
    REM バッチ ファイルを実行するためには、次の行は途中で切らずに 1 行で続けて記述する必要があります。
    START /WAIT Msaccess.exe "C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb" /x "Create Snapshot"
    EXIT

次に、システム エージェント (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 つの手順を完了する必要があります。

  1. 「SnapshotBrowser サンプル アプリケーション: ネットワーク サーバー上でレポートを表示、印刷する」で説明したディレクトリ構造にスナップショット ファイルを保存します。

  2. MailReport という名前のフォルダを作成します。

  3. Outlook のルールを作成し、レポートを要求する電子メールを MailReport フォルダに配置するようにします。Outlook でルールを作成するには、[ツール] メニューの [自動仕訳ウィザード] または [受信トレイ アシスタント] を使います。

    自動仕訳ウィザード

    自動仕訳ウィザードには、電子メールを MailReport フォルダに送るように作成されたルールが表示されます。

  4. Reports フォルダが含まれているネットワーク サーバーへの UNC パスを指定します。この情報は、[txtRptDirectoryPath] ボックスの Text プロパティに入力します。

     注意   AutomatedMailer サンプル アプリケーションでは、プログラムの実行中にユーザーがこのパス設定を指定または変更できるようにするフォームも使われます。

  5. 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 サンプル アプリケーションでは、次の手順を使って、レポート スナップショットを要求する電子メール メッセージに対する返信メッセージの作成と送信を自動化する方法を示しています。

  • Microsoft Outlook でルールを作成し、件名に "MailReport" が含まれている電子メールが MailReport という名前の Outlook のサブフォルダに配置されるようにします。

  • 以下の処理を実行する VBA コードを作成します。

    • 電子メール メッセージの本文を解析して、指定された月を取得します。
    • 電子メール メッセージの本文を解析して、要求されたレポート名の一覧を取得します。
    • Outlook で、MailItem の Reply メソッドを使って、電子メールの要求に対する返信メッセージを作成します。
    • 返信メッセージにレポート スナップショット ファイルを埋め込みます。
    • 無効なファイル名が見つかった場合は、レポートが見つからなかったことを示すエラー メッセージを挿入します。
    • 要求元のユーザーに電子メールを送信します。
広告