none
ActiveXからExcelのImageコントロールへの画像設定について RRS feed

  • 質問

  • お世話になります。

    VB6で作成したActiveX DLLからExcelファイルを開き、
    Excelファイルに配置してあるImageコントロールに画像を設定したいのですが、
    下記の方法だと、エラー「オートメーション エラーです。致命的なエラーです。」
    が発生してしまい、設定できませんでした。
    シートオブジェクトは正常に参照できていて、文字列等ならセルに入力できています。

    Set objSheet.Image1.Picture = LoadPicture("C:\a.gif")

    ①試しに変数に設定できないかやってみたところ、これも駄目なようです。
    Dim img2 As Image
    Set img2.Picture = LoadPicture("C:\a.gif")

    ②下記のようにStdPictureへの設定は問題なく、設定できました。
    Dim img3 As StdPicture
    Set img3 = LoadPicture("C:\a.gif")

    ③ただし、②の変数の値をExcelのImageコントロールに設定しようとすると、
     上記のエラーが発生してしまうようです。
    Set objSheet.Image1.Picture = img2.Picture


    解決方法をご存知の方がいらっしゃいましたら、ご教授願います。

    以上です。

    2006年6月15日 7:58

すべての返信

  • シート上の Image1を取得する場合に 途中でReadOnly属性が与えられてしまうためではないでしょうか

    Image1へのアクセスは Worksheet.OleObjects("Image1").Objectとなるようですが

    このOLEObjects().Objectが読み取り専用のプロパティのようです

    ブックが固定されているなら ブックの標準モジュールにイメージ設定用のプロシージャを用意してみてはいかがでしょう



    '' Excelの標準モジュール
    Sub SetImage(sName as String)
      Sheet1.Image1.Picture = LoadPicture(sName)
    End Sub

    '' VB6 DLL側
    objSheet.Application.Run "SetImage", "C:\a.gif"


     

    と言った具合です

    2006年6月15日 12:59
  • redfox63さん、ありがとうございました。

    ご提案頂いた方法でうまくいきました。

    2006年6月17日 3:08