Access (VBA)

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

 
(Windows 10 Pro : Microsoft 365)
非連結オブジェクトフレームに表示するファイルの設定の件
投稿日時: 22/06/22 18:18:50
投稿者: アロハ

いつもお世話になっております。
 
フォーム上に非連結オブジェクトフレームを配置して、エクセルのシートを表示しようとしています。
設定方法(VBA)を調べてみましたが、うまくいかないので質問させていただきます。
 
@非連結オブジェクトフレームを最初に配置したときに指定したエクセルファイルから変更できない。
Aヘルプ通りにVBAを実行してもエラーになる。(.Action指定時)
Bファイルを指定するアクションを起こすまでは非連結オブジェクトフレームには何も表示したくないが、空欄にできない。
 
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 = acOLESizeZoom
End Sub
 
上記はヘルプを参照しておりますが、何が間違っているでしょうか。
 
 
ご指導ご鞭撻のほど、よろしくお願いします。

回答
投稿日時: 22/06/23 10:55:27
投稿者: Suzu

Enable/Lockedプロパティはどうなっていますか?
 
ObjectFrame.Action プロパティ (Access)
https://docs.microsoft.com/ja-jp/office/vba/api/access.objectframe.action
 

引用:
コントロールの " Enabled /使用可能" プロパティが [No/いいえ] に設定されているか、" Locked /編集ロック" プロパティが [Yes/はい] に設定されている場合は、 Action プロパティの設定値の中に、使用不能なものがあります。 次の表に、このような条件で使用可能な設定値および使用不能な設定値を示します。

 
 
 
前回
フォームにエクセルシートのプレビュー表示の件
https://www.moug.net/faq/viewtopic.php?t=81578
 
再度
引用:
Excelへの操作は VBAで行っているのであれば、その結果を フォーム上で見せる必要があるか疑問です。
 何か問題が発生しうるから、表示し、確認してもらう必要があるのでしょうか?
  
 だとすれば、その処理自体に問題があるのですから、それを是正するのが優先と思います。

投稿日時: 22/06/27 09:54:38
投稿者: アロハ

Suzu様
 
コメントありがとうございます。

引用:
Enable/Lockedプロパティはどうなっていますか?
  
ObjectFrame.Action プロパティ (Access)
https://docs.microsoft.com/ja-jp/office/vba/api/access.objectframe.action
  
引用:
コントロールの " Enabled /使用可能" プロパティが [No/いいえ] に設定されているか、" Locked /編集ロック" プロパティが [Yes/はい] に設定されている場合は、 Action プロパティの設定値の中に、使用不能なものがあります。 次の表に、このような条件で使用可能な設定値および使用不能な設定値を示します。

コントロールの " Enabled /使用可能" プロパティが [No/いいえ] に設定されていました。[Yes/はい]に設定することで解決しました。
 
解決@非連結オブジェクトフレームを最初に配置したときに指定したエクセルファイルから変更できない。
解決Aヘルプ通りにVBAを実行してもエラーになる。(.Action指定時)
 
Bファイルを指定するアクションを起こすまでは非連結オブジェクトフレームには何も表示したくないが、空欄にできない。
 
初期状態に対して何も表示しないようにするには、コントロールの最初の設定で何かするのかフォームを開くときに何も表示しないようなコードを作るのか、どうしたらいいでしょうか。
引用:
前回
フォームにエクセルシートのプレビュー表示の件
https://www.moug.net/faq/viewtopic.php?t=81578
  
再度
引用:
Excelへの操作は VBAで行っているのであれば、その結果を フォーム上で見せる必要があるか疑問です。
 何か問題が発生しうるから、表示し、確認してもらう必要があるのでしょうか?
   
 だとすれば、その処理自体に問題があるのですから、それを是正するのが優先と思います。

ご指摘いただいたように是正を優先させていただきますが、今回は非連結オブジェクトフレームの仕様に関する質問なのでご指導いただきたいです。
 
宜しくお願い致します。

回答
投稿日時: 22/06/27 15:41:18
投稿者: Suzu

アロハ さんの引用:
コントロールの " Enabled /使用可能" プロパティが [No/いいえ] に設定されていました。[Yes/はい]に設定することで解決しました。

 
良かったです。
 
細かい部分については、 Accessが手元に無く確認できないのですが
 
1. エラーになるとの事ですが、どんなエラーなのでしょうか。
 
 
T'sWare
【コントロールプロパティ和英対比表』
https://tsware.jp/study/vol9/vbanote_19.htm
 
に よると、365では Action が 使用できない様です。
 
2. VBE上で、コントロール名.Action の状態から、「コントロール名.」としてインテリセンス機能で
  Action は表示されますでしょうか?
 
3. 初期として、何も表示しない様にしたいとの事ですが
 非連結オブジェクトフレームを
  ・コントロールを作成する際に、リンクとしてではなく、空白の埋め込みとしておく
   或いは、
  ・コントロールを作成する際に何も表示されていない部分 が表示される位置を指定する
 
 非連結オブジェクトフレーム自体が見えない様にしてしまう
  ・非連結オブジェクトフレーム Visible の制御
  ・非連結オブジェクトフレーム の前面に別のものを表示

投稿日時: 22/06/27 20:45:21
投稿者: アロハ

Suzu様
  
コメントありがとうございます。

引用:
細かい部分については、 Accessが手元に無く確認できないのですが
  
1. エラーになるとの事ですが、どんなエラーなのでしょうか。
  
  
T'sWare
【コントロールプロパティ和英対比表』
https://tsware.jp/study/vol9/vbanote_19.htm
  
に よると、365では Action が 使用できない様です。
  
2. VBE上で、コントロール名.Action の状態から、「コントロール名.」としてインテリセンス機能で
  Action は表示されますでしょうか?

これらについては前回のコメントで書いた通り解決しております。
ちなみにインテリセンス機能でActionは表示されました。
引用:
3. 初期として、何も表示しない様にしたいとの事ですが
 非連結オブジェクトフレームを
  ・コントロールを作成する際に、リンクとしてではなく、空白の埋め込みとしておく

空白の埋め込みがないので困っています。
コントロールを配置したあと、リンクとしてではなく、空白の埋め込みに変更しようとすると「このプロパティは読み取り専用で、変更できません。」とでてきます。
引用:
 或いは、
  ・コントロールを作成する際に何も表示されていない部分 が表示される位置を指定する

この場合、パッと見何もない状態にはなりますが、クラスがペイントと指定されてしまい、ダブルクリックするとペイントが起動する状態になってしまいます。
引用:
 非連結オブジェクトフレーム自体が見えない様にしてしまう
  ・非連結オブジェクトフレーム Visible の制御
  ・非連結オブジェクトフレーム の前面に別のものを表示

最終手段として考えていましたが、このコントロールの初期設定を空にできないのであれば、これしかないのでしょうか。
 
ご指導のほど、よろしくお願いします。

回答
投稿日時: 22/06/28 17:23:34
投稿者: Suzu

すみません。
 
手元にAccessがなく、確認ができない状況なのですが
 

引用:
コントロールを配置したあと、リンクとしてではなく、空白の埋め込みに変更しようとすると「このプロパティは読み取り専用で、変更できません。」とでてきます。

こちらに関しては、
 
 
BoundObjectFrame.OLETypeAllowed プロパティ (Access)
https://docs.microsoft.com/ja-jp/office/vba/api/access.boundobjectframe.oletypeallowed
 
引用:
注意
[!メモ] 非連結オブジェクト フレームおよびグラフに対しては、オブジェクトが作成された後に " OLETypeAllowed /作成可能 OLE" の設定値を変更することはできません。

 
との事でした。
 
ですので、当方の案
引用:
 非連結オブジェクトフレームを
  ・コントロールを作成する際に、リンクとしてではなく、空白の埋め込みとしておく

こちらは、とり下げさせてください。
 
 
引用:
パッと見何もない状態にはなりますが、クラスがペイントと指定されてしまい、ダブルクリックするとペイントが起動する状態になってしまいます。

 
クラスがイベントと指定される と言うのは良く判りませんが
オブジェクトフレームなのですから、ダブルクリックをすれば、
その クラスに応じた アプリケーションが起動し、オブジェクトが表示されるのは 当然の動作と思います。
 
Action が、 Link ですから、Enable/Locked を False にも出来なさそうなので
Action を別のものにし、Enable/Locked を False にするくらいしか思いつきません。
 
他の方からの回答を待ってみてください。

トピックに返信