Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13261 / 13646 ツリー ←次へ | 前へ→

【6251】VBからImageコントロールへ画像をロードするには。。。 ふじ 03/6/20(金) 14:10 質問
【6305】Re:VBからImageコントロールへ画像をロードするに... JuJu 03/6/23(月) 12:39 発言
【6309】Re:VBからImageコントロールへ画像をロードする... ふじ 03/6/23(月) 15:12 質問

【6251】VBからImageコントロールへ画像をロードするには...
質問  ふじ  - 03/6/20(金) 14:10 -

引用なし
パスワード
   はじめまして。
いつも仕事で参考にさしていただいています。


VBからエクセル上にあるImageコントロールへ画像をロードしたいのですが、

Imageコントロール名:Image1
objSheet :Excel.Worksheetオブジェクト

objSheet.image1.Picture = LoadPicture("フルパスファイル名")
 
上記のように書くと、VBからimage1が認識されず

”メソッドまたはデータメンバが見つかりません”というエラーがでます

良い方法をご存知でしたら、教えていただきたいのですが、、、
どうぞ宜しくお願いいたします

【6305】Re:VBからImageコントロールへ画像をロードする...
発言  JuJu E-MAIL  - 03/6/23(月) 12:39 -

引用なし
パスワード
   ふじさん、こんにちはぁ

>objSheet.image1.Picture = LoadPicture("フルパスファイル名")

詳しく書くと長くなるので省略しますが、このように書きます。

objSheet.OLEObjects("Image1").Object.Picture = ...

Excel上でも同様に動くと思います。

でも、VBでは他の原因で動きません。
VBとExcelのPictureオブジェクトの仕様の差異から生じる問題なのですが、VBからはExcelのPictureオブジェクトを参照設定することができません。

確実なのは、Excel上でイメージを読み込む関数を作って、VB側からそれを呼び出すと言う方法です。

ではではぁ

【6309】Re:VBからImageコントロールへ画像をロードする...
質問  ふじ  - 03/6/23(月) 15:12 -

引用なし
パスワード
   ▼JuJu さん:

jujuさん回答ありがとうございました(^−^)

>でも、VBでは他の原因で動きません。
>VBとExcelのPictureオブジェクトの仕様の差異から生じる問題なのですが、VBからはExcelのPictureオブジェクトを参照設定することができません。

そうなんですね・・・

>
>確実なのは、Excel上でイメージを読み込む関数を作って、VB側からそれを呼び出すと言う方法です。

なるほど、わかりました、今から早速やってみます!
結局、なぜPICTUREオブジェクトを使おうかと思ったかというと
画像の大きさはまちまちなので、表示都度で拡大縮小をしてやらなくては
ならないのです

それで今は、

.Pictures.Insert("ファイルフルパス").Select

として、原寸大で画像をはりつけた後、

Selection.ShapeRange.Height
Selection.ShapeRange.Width

で縦横サイズを取得し、縮小率計算後

Selection.ShapeRange.ScaleHeight 縮小率, True ', msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 縮小率, True ',msoScaleFromTopLeft

としているのですが、

Selectionを使用すると、画像の縮小はうまくいったんですが
なぜかVBからのEXCELプロセスの開放がうまくいかなくて
困っていたんです、、、

なぜなんでしょうか?

まずは、JuJuさんに教えていただいた方法で試してみよーっと

本当にありがとうございまいた

13261 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free