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表示の種類]プロパティは
どのように設定されているのでしょうか。

回答
投稿日時: 19/07/22 11:40:20
投稿者: bornkiller

win10,access 2007
私も試しにやってみました。
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With
 
こういうエラーが出るんですが。
 
エラー番号: 2793
Visual Basic プロシージャの Action プロパティで指定されている操作を実行することはできません。エラー:C:\PROGRA~2\COMMON~1\MICROS~1\VBA\VBA6\1041\VbLR6.chm-1

回答
投稿日時: 19/07/22 11:53:43
投稿者: sk

bornkiller さんの引用:
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With

bornkiller さんの引用:
Visual Basic プロシージャの Action プロパティで指定されている操作を実行することはできません。

19/06/27 11:39:53 の sk さんの引用:
(修正例)
-----------------------------------------------------
With Me![非連結オブジェクトフレーム名]
    .Visible = True
    .Enabled = True
    .Locked = False
    .Class = "AcroExch.Document.DC"
    .OLETypeAllowed = acOLELinked
    .SourceDoc = strPath
    .UpdateOptions = acOLEUpdateAutomatic
    .Action = acOLECreateLink
End With
-----------------------------------------------------

投稿日時: 19/07/27 16:18:07
投稿者: yamasho

お世話になります。
 
非連結オブジェクトフレームの[OLE表示の種類]プロパティは、
「内容」になっております。
 

回答
投稿日時: 19/07/29 10:38:40
投稿者: bornkiller

 skさんRESありがとうございます。.Lockedでやったらアイコンだけになりました。で、
ついでにembedでやったら下記のエラーが出ました。
エラー番号: 2777
Visual Basic プロシージャの CreateObject 関数のクラス引数が正しく指定されていま
せん。エラー:VBLR6.CHM1010851
次にAdobeReaderが入っていなかったので無料のやつをインストールしてやったらなにも
表示されなくなりました。

回答
投稿日時: 19/07/29 20:31:28
投稿者: mayu.

19/06/15 16:29:56 yamasho さんの引用:
AdobeReaderはインストールされています。

19/06/28 11:00:42 yamasho さんの引用:
今度は、
OLEオブジェクトにアクセスするときにエラーが発生しました。
となりました。

Adobe Readerの保護モードを無効に設定すると
解消される可能性がありますので、試してみることをお薦めします。
http://www.keyring.net/support_faq/keyringpdf/2010/11/adobe-reader-x.php
 
また、PDF の表示は
MS-Access標準( 2010以降 )のコントロールである
【 Web ブラウザー コントロール 】を使用しても実現が可能です。
使い方は、コントロールソースに
 
="PDFのフルパス"
 
と記述します。
表示させる PDF を動的に変更する場合は
 
strPath = CurrentProject.Path & "\H26_05ryokaku.PDF"

Me.Controls("配置したコントロールの名前").ControlSource = _
  "=" & Chr$(34) & strPath & Chr$(34)

と記述すればいいでしょう。

回答
投稿日時: 19/08/13 10:46:09
投稿者: bornkiller

 どういうわけかできるようになりました。同じコードで以前はエラーが出ていたのに、理由が分かりません。
WIN10のUPDATEがあったので、それしか見当たりません。
 使い心地はいまいちです。スクロールバーも出てこず表示されるだけ。

トピックに返信