MicrosoftAccessフォームでドキュメントをプレビューする
プロジェクトの範囲
最近、プロジェクトにドキュメントセンターを追加しました。これにより、ユーザーはpdf、word、txt、画像などのドキュメントをプロジェクトに添付できます。さらに、受信メールを読み取り、メールの添付ファイルをネットワークドライブに保存するように自動プロセスが設定されます。目標は、ユーザーが受信した新しいドキュメントを表示して、正しい場所に保存できるようにすることです。もちろん、件名やドキュメントの出所などの情報を抽出するプロセスを管理し、ユーザーがドキュメントの一般的な情報を理解できるようにします。これはテーブルに保存されます。さらに、ユーザーはドキュメントを表示してその内容を読むことができる必要があります。
ソリューション
もちろん、アクセスから他のアプリケーションを起動して、WordでWordドキュメントを表示したり、Adobe AcrobatなどでPDFを表示したりできます。ただし、ユーザーが操作する画面が1つしかない場合は、あるアプリケーションから別のアプリケーションに切り替える必要があります。複数のドキュメントタイプがある場合は、もちろん、これは複数のアプリケーションを開くことを意味します。そのため、ユーザーがシステムを簡単に管理できるようにするタブレイアウトを備えた新しいアクセスフォームでドキュメントを起動するシンプルなソリューションを提供しました。以下の例では、ユーザーが自分のコンピューターでアクセスする必要がある特定のパスからファイルを読み取るコードを使用しています。または、ドキュメントがSQLテーブルに保存されている場合は、コードを変更してドキュメントを一時的にローカルドライブに保存し、一時的な場所からファイルを起動することもできます。この方法を使用する場合は、フォームを表示/閉じた後に一時ファイルを削除するための追加のコードも含める必要があります。
サンプルフォーム
提供されたサンプルフォームは、OpenArgsのドキュメントパスを渡して起動する必要があります
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
オンロードコードは、パスが渡されたこと、およびファイルが存在するかどうかを確認します。すべてが順調であれば、プロセスは続行されます。
Private Sub Form_Load()
If IsNull(Me.OpenArgs) Then
MsgBox "No document to show", , "Path not specified"
Exit Sub
Else
If Not FSO.FileExists(Me.OpenArgs) Then
MsgBox "Your computer does not have access to the named file. You need to download the file to view it."
Exit Sub
Else
Showdocument OpenArgs
End If
End If
End Sub 最後に、コードはドキュメントをロードします。 Showdocumentサブは、さまざまなドキュメントタイプを処理します。ほとんどのドキュメントタイプはelseケースを使用します。フォーム自体には、 txtPathという非表示のテキストボックスがあります。 OpenArgsの値(ファイル名とパス)を格納します。これは、マップされたドライブまたはUNCのいずれかです。 Webブラウザオブジェクトは=[txtPath]を格納します コントロールソースとして。ただし、ワードドキュメントは同じようには機能しないため、最初にドキュメントをhtmlとして保存する必要があります。もともとCrystalLongによって作成された方法を使用し、いくつかの小さな変更を加えました。
Private Sub Showdocument(strPath As String)
Dim strExt As String
Dim sPathFileHTML As String
Dim oWordApp As Object
Dim oDoc As Object
strExt = GetFileExt(strPath)
Select Case strExt
Case "docx"
'save word doc as HTML
sPathFileHTML = CurrentProject.Path & "\temp.html"
Set oWordApp = CreateObject("Word.Application")
Set oDoc = oWordApp.Documents.Open(strPath)
oDoc.SaveAs2 FileName:=sPathFileHTML, FileFormat:=8 'wdFormatHTML
oDoc.Close False
oWordApp.Quit
Set oDoc = Nothing
Set oWordApp = Nothing
Case Else
sPathFileHTML = strPath
End Select
'open in browser control
Me.txtPath.Value = sPathFileHTML
End Sub