Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Access 2013)
フォームにPDFを表示させたい
投稿日時: 19/06/15 16:29:56
投稿者: yamasho

お世話になります。
フォームにPDFを表示させたいです。
 
フォームにActiveXコントロールを貼り付け、
ActiveXコントロールの選択でAdobe PDF Readerを選びました。
 
表示というコマンドボタンを押したときに、
Me!ActiveXコントロール50.Src = strPath
を実行させようとしています。
 
フォームを開くと、
 
OLEサーバーが登録されていません。
OLEサーバーを再セットアップしてください。
 
というエラーになってしまいます。
AdobeReaderはインストールされています。
 
どこがまずいのでしょうか?
 

回答
投稿日時: 19/06/17 11:01:57
投稿者: sk

引用:
フォームにPDFを表示させたいです。
  
フォームにActiveXコントロールを貼り付け、
ActiveXコントロールの選択でAdobe PDF Readerを選びました。

ActiveX コントロールではなく、非連結オブジェクトフレームを
使用された方がよろしいのでは。

投稿日時: 19/06/17 18:49:41
投稿者: yamasho

お世話になります。
 
非連結オブジェクトフレームを使うことで
無事できました。
 
表示させたいPDFファイルを、
コマンドボタンを押したときに
VBAで変更することは可能でしょうか?
 
イメージではできたのですが、
非連結オブジェクトフレームのときは
やり方が分かりません。
 

回答
投稿日時: 19/06/18 09:47:23
投稿者: sk

引用:
表示させたいPDFファイルを、
コマンドボタンを押したときに
VBAで変更することは可能でしょうか?

引用:
Me!ActiveXコントロール50.Src = strPath

If Nz(strPath, "") = "" Then
    Exit Sub
End If
 
If Dir(strPath) = "" Then
    MsgBox "'" & strPath & "'に該当するファイルが存在しないか、ファイルを参照出来ません。", _
           vbExclamation, _
           "エラー"
    Exit Sub
End If
 
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With
 
--------------------------------------------------------------
 
[OLEタイプ]プロパティの設定を「リンク」とする場合は
以上のようなコードで記述なさればよろしいかと。

投稿日時: 19/06/27 11:09:53
投稿者: yamasho

お世話になります。
 
実行したところ最後から2行目の、
 
.Action = acOLECreateLink
 
のところでエラーになってしまいました。
 
「Visual Basic プロシージャのActionプロパティで指定されている操作を実行することはできません。」
 
参照設定が必要なのでしょうか?
 
Adobe Reader File Preview Type Library
 
のところにはチェックが入っています。

回答
投稿日時: 19/06/27 11:39:53
投稿者: sk

引用:
実行したところ最後から2行目の、
  
.Action = acOLECreateLink
  
のところでエラーになってしまいました。

具体的にどのようなコードに修正されたのでしょうか。
  
引用:
Visual Basic プロシージャのActionプロパティで指定されている操作を実行することはできません。」

・非連結オブジェクトフレームの[可視]プロパティを
 「いいえ」に設定している。
 
・非連結オブジェクトフレームの[使用可能]プロパティを
 「いいえ」に設定している。
 
・非連結オブジェクトフレームの[編集ロック]プロパティを
 「はい」に設定している。
 
引用:
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With

仮に私の示したサンプルの通りに記述されたのであれば、
Locked プロパティを明示的に設定するコードがないことから
[編集ロック]プロパティが「はい」に設定されている可能性が
あるように思います。
 
(修正例)
-----------------------------------------------------
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Locked = False
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With
-----------------------------------------------------
 
引用:
参照設定が必要なのでしょうか?

基本的には必要ありません。

投稿日時: 19/06/28 11:00:42
投稿者: yamasho

お世話になります。
 
私のコードです。
 
--------------------------------------------------------------------------
    strPath = CurrentProject.Path & "\H26_05ryokaku.PDF"
     
    MsgBox strPath
     
    With Me!質問
        .Visible = True
        .Enabled = True
        .Locked = False
        .Class = "AcroExch.Document.DC"
        .OLETypeAllowed = acOLELinked
        .SourceDoc = strPath
        .UpdateOptions = acOLEUpdateAutomatic
        .Action = acOLECreateLink
    End With
 --------------------------------------------------------------------------
 
 .Locked = Falseを追加したところ、
今度は、
 
OLEオブジェクトにアクセスするときにエラーが発生しました。
 
となりました。
 
 

回答
投稿日時: 19/07/01 11:15:49
投稿者: sk

引用:
OLEオブジェクトにアクセスするときにエラーが発生しました。

その非連結オブジェクトフレームの[OLEクラス]プロパティと
[クラス]プロパティにはどのような値が設定されているのでしょうか。

投稿日時: 19/07/12 11:06:48
投稿者: yamasho

お世話になります。
 
[OLEクラス]プロパティは「Adobe Acrobat 8.0」、
[クラス]プロパティは「AcroExch.Document.DC」です。
 
気になったのが、[OLEタイプ]プロパティが「埋め込み」になっています。
 
これを「リンク」に変更しようとしても、
「このプロパティは読み取り専用で、変更できません」
となり、変更できません。
 
 
 
 
 

回答
投稿日時: 19/07/12 11:35:52
投稿者: sk

引用:
[OLEクラス]プロパティは「Adobe Acrobat 8.0」、
[クラス]プロパティは「AcroExch.Document.DC」です。

では環境的な問題ではなく、下記の設定(非連結オブジェクトフレームを
挿入した際に、埋め込みオブジェクト/リンクオブジェクトのどちらとして
挿入されたか)によるものですね。
  
引用:
[OLEタイプ]プロパティが「埋め込み」になっています。

この場合は、次のようにコードを書き換えてみて下さい。
 
引用:
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Locked = False
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With

With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Locked = False
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLEEither
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateEmbed
End With

投稿日時: 19/07/13 11:26:24
投稿者: yamasho

何度もすみません。
 
今度はエラーは出ないのですが、
PDFファイルの内容が表示されずに、
ファイル名とファイルのアイコンが表示されてしまいました。
 

回答
投稿日時: 19/07/16 18:03:10
投稿者: sk

引用:
今度はエラーは出ないのですが、
PDFファイルの内容が表示されずに、
ファイル名とファイルのアイコンが表示されてしまいました。

非連結オブジェクトフレームの[OLE表示の種類]プロパティは
どのように設定されているのでしょうか。

トピックに返信