次の方法で共有

フォームにOLE連結オブジェクトフレームをつくりExcelシートを表示したい。

Anonymous
2018-03-02T01:56:34+00:00

以前の、どなたかの質問の中に「連結オブジェクトフレームにExcelファイルを表示したい。」というのを見つけました。その質問に付属するかたちとなりますが、私は、表示させたら、それをフォーム画面とレイアウト的にはほぼ同じレポートに、プレビューさせ、Excelシートの画は一時的に写した状態で印刷までもっていきたいというのが目的です。

「”SourceItem/OLE元データ名”プロパティ」などで検索すると、以下のようなコードが紹介されています。

Sub Command1_Click    OLE1.Class = "Excel.Sheet"    ' Set class name.    ' Specify type of object.    OLE1.OLETypeAllowed = acOLELinked    ' Specify source file.    OLE1.SourceDoc = "C:\Excel\Oletext.xls"    ' Specify data to create link to.    OLE1.SourceItem = "R1C1:R5C5"    ' Create linked object.    OLE1.Action = acOLECreateLink    ' Adjust control size.    OLE1.SizeMode = acOLESizeZoomEnd Sub

フレームには写すが、Excelシートの画はレコードには保存せず、別につくったTextBoxにパス名を保存するようにしています。「オブジェクトの挿入」などでレコードに保存したら、すぐに容量が重くなってしまうからであります。

上記のOLE1.SourceDoc = "C:\Excel\Oletext.xls"のところは、OLE1.SourceDoc = Me!パス名と、書き換えています。

使い方が、丁寧に解説されてないので、勝手に変な具合に使っているところがあるのではないかと思い、質問します。

現に、それが元で急にエラーが出て、ダウンしたり再起動になったりします。これは、コードのなかで本来、同居できない、干渉しあうものがあるからではないでしょうか?うまくいったり、いかなかったりは本当に厄介であります。

1.このOLE1.Classというのは、”Excel.Sheet"で、CreateObjectなどを使わずにExcelを起動させているようですが、Sheetを宣言することもなく、

また、Set xlsheet = nothingで終了させてもいませんが大丈夫なのでしょうか?

 私の場合、フォームに2か所OLEフレームを配置しているので、気になります。

2.このコードの解説では、「非連結オブジェクトフレーム」を使うように案内されていますが、「非連結」にすると、今度はレポートの貼りたい箇所のコントロールに、=Forms![フォーム名]![OLE1]としても、Excelシートの画像が反映されません。なので、「連結」フレームにしています。「連結」なら、フォームの画像も次に開いたときに、フレームのなかに残りませんし、パス名だけが保存されている状態なので扱いやすくなります。

仕組みとしては、要するに

パス名のテキストボックスが空の場合は、「ファイルを開く」ダイアログで、とある格納場所のExcelシートを探しに行き、指定する。

テキストボックスに記入されたら、パス名に従って、OLEフレームにそのエリアを映し出す。(2か所)

そのフォームのコンテンツのまま、レポートに反映させて印刷までもっていく。

ただこれだけのことなくですが、半年以上分からずに困っています。どうしても不具合がつきまといます。

上記のしくみの、正しいやり方を教えてください。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

1 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-03-02T08:07:35+00:00

    ​石井 仁 さん、こんにちは。

    マイクロソフト コミュニティのご利用、ありがとうございます。

    Access 2013 で連結オブジェクトフレームに Excel ファイルを表示して、フォーム画面と同じレイアウトでレポートにプレビューさせた状態で印刷したいのですね。

    投稿していただいた内容ですと、基本的な使い方やトラブルの対処法について情報交換を行っているマイクロソフト コミュニティでは情報が集まりにくいかと思います。

    VBA に関連する内容なので、開発者の方々が多く利用されていて専用のカテゴリがある Msdn フォーラムに投稿して、アドバイスや情報を集めてみてはいかがでしょうか。

    Msdn フォーラム - Visual Basic for Application (VBA)

    よろしければ、ご利用ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません