Access 2007では、PDFのコンテンツが最初のページであっても、フォームに表示する方法はありますか?このPDFは添付ファイルとしてテーブルに保存されています。
2 に答える
免責事項:この回答は、データベースの外部に個別のファイルとして保存されているPDFファイルに対してのみ機能します。それらはネットワーク接続を介して見つけることができますが、データベーステーブルから直接アクセスする方法がわかりません。このサイトでは、添付ファイルの使用方法について詳しく説明していますが、実際に添付ファイルを自動的に表示する方法については説明していません。Accessでは提供されていない機能である可能性があります。
Microsoft Web Browser
コントロールを使用して、InternetExplorerで表示できるものなら何でも表示できます。
コントロールを追加すると、フォームのロードイベントまたはオープンイベント中に表示するものに移動できます。
たとえば、コントロールが呼び出されたWebBrowser0
場合、次のように機能します。
Private Sub Form_Load()
Me.WebBrowser0.Navigate2 "C:\example.pdf" 'Substitute the actual address here.
End Sub
これは、Access内で他のコンテンツを表示するための非常に用途の広い方法です。詳細については、こちらをご覧ください。
PDF をプレビューするために私が知っている唯一の 2 つの方法 (Daniel によって提案された WebBrowswer と Adobe Active X コントロール) では、ファイル パスをコントロールに渡す必要があります。
添付ファイル フィールドからファイルを抽出し、 などの一時的な場所に保存することをお勧めしますC:\Documents and Settings\username\AppData
。Environ
これは、vbaコマンドを使用して見つけることができます。
ファイルの抽出はSaveToFile
、埋め込まれた DAO レコードセットのメソッドを使用して行われます (これは、添付ファイルがメモリに保存される方法です)。
サンプルコード
各レコードには というフィールドが AttachedFile
あり、各レコードには添付された PDF が 1 つだけあるとします。 フォームは、PDF を表示するために指定された WebBrowser コントロールを使用していますPreviewBrowser
Private Sub Form_Current()
On Error GoTo ExitSub
Dim FormRS As DAO.Recordset
Set FormRS = Me.Recordset
Dim RecAtt As DAO.Recordset
If (Me.AttachedFile.AttachmentCount > 0) Then
Set RecAtt = FormRS.Fields("AttachedFile").Value
RecAtt.OpenRecordset
Dim Path As String
FilePath = Environ("APPDATA") & "\Preview.pdf"
If (Dir(FilePath) <> "") Then Kill FilePath
RecAtt.Fields("FileData").SaveToFile FilePath
Me.PreviewBrowser.Navigate2 FilePath
End If
ExitSub:
RecAtt.Close
End Sub
もちろん、特定のレコードに複数の添付ファイルがある場合は、コードをもう少し複雑にする必要がありますが、それはRecAtt
レコードセットを操作することで実現できます。