次の方法で共有

連結オブジェクトフレームにExcelファイルを表示したい。

Anonymous
2012-09-03T07:51:14+00:00

お世話になります。

【やりたいこと】

フォーム上の連結オブジェクトフレームにコード上で設定したExcelファイルを表示したい。

【現状】

フォーム上の連結オブジェクトフレーム(OLE1と名前を付けました)に、

指定したExcelファイルが表示されません。

以下のコードの(※)の部分でエラーとなり、メッセージが表示されます。

Me.OLE1.Class = "Excel.Sheet"

Me.OLE1.OLETypeAllowed = acOLELinked

Me.OLE1.SourceDoc = CurrentProject.Path & "\テーブルデータ.xls" '←表示したいExcelファイル

Me.OLE1.Action = acOLECreateLink '←(※)ここでエラーになります

Me.OLE1.Visible = True

『実行時エラー'2793':

Visual Basic プロシージャのActionプロパティで指定されている

操作を実行することはできません』

連結オブジェクトフレームをダブルクリックをすると以下のメッセージが表示されます。

『OLEオブジェクトが空です。

もととなるテーブルのフィールドにOLEオブジェクトが含まれないときは、

連結オブジェクトフレームを編集できません。

フィールドを右クリックし、[オブジェクトの挿入]をクリックして、

ダイアログボックスでオブジェクトを指定してフィールドに追加してください。』

【質問】

エラーの原因と、フォーム上の連結オブジェクトフレームにコード上で設定したExcelファイルを表示させる方法を教えてください。

よろしくお願いいたします。

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

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

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

質問作成者が受け入れた回答

Anonymous
2012-12-26T03:47:07+00:00

MukkuMukuさんこんにちは。

返信ありがとうございました。

ご報告が遅れてしまい、申し訳ございません。

あれから何度か原因を探ってみて分かったのですが、

Me.OLE1.Action = acOLECreateLink

の前に、別のプロシージャで

Me.OLE1.Visible = False

としていたため、エラーメッセージが表示されていたようです。

よって、以下の様に書き直してみたところ、

正常に動作することが確認できました。

Me.OLE1.Visible = True

Me.OLE1.Action = acOLECreateLink

色々と詳しく教えて頂き、ありがとうございました。

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

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

6 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-09-07T13:17:37+00:00

    こんばんは、MukkuMukuです。

    んーと、きっかけがわからないんですよね。

    いくつかのイベントで動作させても同じ現象起きていないし。別の環境でも同じようになるんでしょうか。新規サンプルで作り直しても変化ないんでしょうか。

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

    0 件のコメント コメントはありません
  2. Anonymous
    2012-09-07T08:37:13+00:00

    こんにちは。

    MukkuMuku さん、コメントありがとうございます。

    (いつも、大変勉強になります)

    nyandaba さん、Microsoft Answers への書き込み、ありがとうございます。

    VBA を使って非連結オブジェクトに Excel シートの内容を表示する方法については、MSDN フォーラムの VBA フォーラム で情報を集めてみてはどうでしょうか。

    開発者の方が情報交換を行っているフォーラムなので、よいコメントやアドバイスが寄せられるかもしれませんよ。

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

    0 件のコメント コメントはありません
  3. Anonymous
    2012-09-04T01:19:07+00:00

    MukkuMukuさんこんにちは。

    返信ありがとうございます。

    アドバイスをいただき、フォーム上に非連結オブジェクトフレームを配置し、

    ウィザードにて表示したいExcelを選択し、表示することができました。

    しかし、コード上で上記とは異なるExcelファイルのパスを設定すると、

    Me.OLE1.Action の部分で実行時エラー'2793'が出力されてしまいます。

    それも初回時だけです。

    Me.OLE1.SourceDoc にはパスがセットされていたので、

    Me.OLE1.Action の部分だけOn Error Resume Nextでエラーを回避しました。

    そして非連結オブジェクトフレームのオプションで使用可能を「はい」、編集ロック「いいえ」とすると、

    初回時以外でコード上にてExcelファイルのパスを変更するたび画面の表示を切り替えることができ、また、ダブルクリックすることで設定したExcelファイルを開くことができました。

    なぜ初回時だけMe.OLE1.Action の部分でエラーになるのかがわかりません。

    もしよろしければ原因をおしえてください。

    よろしくお願いいたします。

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

    0 件のコメント コメントはありません
  4. Anonymous
    2012-09-03T14:28:38+00:00

    こんばんは、MukkuMukuです。

    **"連結"**オブジェクトフレームなんですよね。

    コントロールソースにオブジェクトがない旨のメッセージなのだけど、**"連結"**オブジェクトフレームである必要が情報として判断しかねています。

    コントロールソースを設定しないか、非連結オブジェクトフレームを使うシナリオなのかなと。

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

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