• 締切済み

オートメーションエラー

VBからExcelシート上のPictureBoxに画像を呼び込もうとしていますが、オートメーションエラーが出ます。 どうしてですか?Excel-VBAで同じ事をすると正常に動作します。 'Excel上にあるPictureBoxオブジェクトを取得 Set Image1 = xlSheet.OLEObjects("Image1").Object 'PictureBoxに画像を貼り付ける With Image1 .AutoLoad = True .AutoSize = False .PictureSizeMode = fmPictureSizeModeZoom .PictureAlignment = fmPictureAlignmentCenter .Picture = LoadPicture("C:\MyPicture\...\pict.bmp") ←ここでエラー! End With 開発環境 Win2000(SP2) + VB6.0(SP4) + Excel2000(SP2)

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

VBのPictureオブジェクトをExcelのPictureオブジェクトに 代入しているのが、いけないのかも。 API関数のStretchBltかBitBltを使うのはどうでしょう?

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

>どうしてですか?Excel-VBAで同じ事をすると正常に動作します。 VBだとxlSheetのオブジェクトが定義されていないからではないですか。 ちゃんとExcelオブジェクトを定義してあげてください。

Chika-F
質問者

補足

早速の回答をありがとう御座います。 xlSheetのオブジェクトは正常に取れています。 (他でも使用していますので間違いありません) 'PictureBoxに画像を貼り付ける With Image1 .AutoLoad = True .AutoSize = False .PictureSizeMode = fmPictureSizeModeZoom .PictureAlignment = fmPictureAlignmentCenter 'ここまでは正常に動作します。 '例えば画像の貼り付け位置を変えたりすると '指示どおりの動作をしています。 .Picture = LoadPicture("C:\MyPicture\...\pict.bmp") ←ここでエラー! 'このステップにくるとエラーになってしまうのです。 'このプロパティに問題があるように思えるのですが・・・ End With

関連するQ&A

  • Excelの既存シートへの写真自動貼付け

    With ActiveSheet.OLEObjects("Image" & i) .Object.PictureSizeMode = 3 .Object.Picture = LoadPicture(myDir & myFile) ・・・のようなimage等を使わず、単純に貼りつけるだけのプログラムを教えて下さい。  具体的にはエクセルの挿入で貼りつけた図1~n の写真を得ることです。

  • オートメーションエラーについて

    こんにちは。palbanです。 現在VBからACCESSにデータを保存するシステムを作成しています。 VBからACCESSの接続にはADOを使用しています。 バージョンはVB6.0SP5,ACCESS2002です。 このシステムをAPI関数のSENDMESSAGEを使用して終了させているのですが、システム終了後以下のような メッセージがでます。 実行時エラー'-2147417848(80010108)': オートメーションエラーです。 起動されたオブジェクトはクライアントから 切断されました。 このエラーの回避方法をご存知の方ご教授願います。 私の方でも調査しましたが修正方法がどうしても わかりません。 宜しくお願いします。

  • サンプルプログラムでエラーが出てしまいます、対処法を教えて下さい。

    Sub test写真の連続挿入()   Dim myDir As String   Dim myFile As String   Dim i As Integer   Dim n As Integer   n = 10   myDir = "D:\写真\" myFile = Dir(myDir, vbNormal)   Application.ScreenUpdating = False   Do Until myFile = ""   If myFile <> "." And myFile <> ".." Then   If (GetAttr(myDir & myFile) And 16) <> 16 Then   i = i + 1   With ActiveSheet.OLEObjects("Image" & i)    .Object.PictureSizeMode = 3    .Object.Picture = LoadPicture(myDir &myFile)   End With   If i = n Then Exit Do   End If   End If   myFile = Dir   Loop   Application.ScreenUpdating = True End Sub このWith ActiveSheet.OLEObjects("Image" & i)の行でエラーが出てしまいます、対処法を教えて下さい。( 実行時エラー'1004'OLEObjects プロパティを取得できません)

  • LoadPictureしたイメージデータのサイズを知りたい

    VB6で作成したプログラムにおいて、サイズが異なるイメージデータをLoadPictureでImageに一旦読込み、PaintPictureで同じPictureBoxに拡大して転送したいのですが、PaintPictureで全データを転送するにはイメージデータのサイズがわからないと全データが転送できません。 LoadPictureでImageに読込んだ場合に、データのサイズ(Width・Heightまたはデータ量)を確認する方法を教えてください。

  • MSDEでオートメーションエラー

    環境:Ms Windows2000 sp1/Ms SQL Server2000/Ms Vb6.0/ ActiveReports Ver1.0J +Ver1.5J差分 上記の環境で作成したPGをMSDEの環境で実行したら「オートメーションエラー、起動したオブジェクトはクライアントから切断されました」のエラーが発生しました。 PGの内容は以下のとおり ・frmMainフォームから印刷範囲指定のfrmPrintをCALLし、 PrtRepというレポートを表示。 ・frmMain、frmPrint、PrtRepはクラスオブジェクト「CSeisanWk」をCALL ・「CSeisanWk」は「CSeisan」をCALLし、データベース にアクセスしている。 ・frmMain、frmPrint、PrtRepは「Esc」キーを押すと  Unload Meでフォームまたはレポートを閉じる ・1回目にfrmMainからfrmPrintを起動し、範囲指定後、 PrtRepを表示。PrtRepをEscキーで閉じ、frmPrintを Escキーで閉じる ・2回目にfrmMainからfrmPrintを起動し、範囲指定後、 PrtRepを表示。PrtRepをEscキーで閉じると、オートメーショ ンエラーが発生。 ・この状態で,PrtRepを範囲指定を変更して何度でも表 示可能。 ・ただし、frmPrintをESCキーにて閉じるとPGが終了してしまう(frmMainが閉じている) ・記述を「Unload frmMain、Unload frmPrint、Unload  PrtRep」に変更しても状況は変わらず。 ・クラスオブジェクトの開放の問題とおもい、オブジェクトの開放、DB切断、これらの記述をコメント化しても状況は  変わらず。 ・frmMainで「form KeyUp」イベントにブレイクポイントを置いて みたが止まらず。 ・MSDEでない環境ではこのエラーが起きない。 めちゃくちゃわかりにくい記述で申し訳ないのですが、 どなたかいい知恵を貸してください。

  • VBでExcel上PictureBoxダブルクリックイベントを取得したい

    VBでOpenしたExcelシート上にあるPictureBoxをダブルクリックした際に発生するイベントを取得したいと思っております。 ExcelVBAでは普通にPictureeBox_DblClick()で取得できますがVBで取得する場合はPictureBoxオブジェクトをどの様に取得・宣言し、プロシージャ名はどの様に書いたらよいのでしょうか。教えて下さい。お願いします。

  • PictureBoxにPSetしてそれをImageへ

     VBに関して経験の浅い者です。 今、タイトル通り、ピクチャーボックスオブジェクト(名前はPict1とする)に、 Pict1.PSet(i,j),color(適当な数) と言うコードを実行していって描画し、 画像を作ったとします。  それで、Pict1にそうして描いて表示されている画像を イメージオブジェクト(名前はImageとする)に送って表示させたいのですが、 方法が分かりません。  Image.[何か]=Pict1.[ナンか]とすれば良さそうだと言う検討を立ててみたの ですが、こんな風にプロパティの色々で解決できますでしょうか?  あと、イメージオブジェクトの説明に、「「AutoRedraw」を有効にしておくと フォームやピクチャーボックスが変更された時にそれが即複写される」とあったの ですが、例えば上のPict1の描写を反映させるにはどうすればいいのでしょう?  Imageに入力する以上はAutoRedrawのターゲット(?に相当する概念)を設定する 必要があると思うのですが、、、

  • VB2010 DBから値取得→パス指定で画像表示

    VB2010でPictureBoxを使用してデータベースから値を取得して PictureBox1.Image =System.Drawing.Image.FromFile("取得した値" & ".jpg") という形でPictureBoxに画像を表示させたいのですが FileNotFoundExceptionはハンドルされませんでした。とエラーが出てできません。 Dim command As SqlClient.SqlCommand = connection.CreateCommand() connection.Open() Dim dr As SqlClient.SqlDataReader command.CommandText = "SELECT s_code FROM テーブル名 ORDER BY s_code" dr = command.ExecuteReader() PictureBox1.Image =System.Drawing.Image.FromFile("..\..\pict" & "dr(s_code)" & ".jpg") データベースのs_codeとpictのフォルダ内にあるパスは一緒です。

  • エクセル2010のvbaについて

    Image1.picture = LoadPicture() 上のImage1を変数にすることはできますか? WithやActiveSheet.Shapes.Range(Array(""))なども実行しましたが 同じエラーしか出ません (オブジェクトは、このプロパティまたはメソッドをサポートしていません) 回答お願いします

  • EXCELでオートシェイプ(テキストボックス)を作成したい

    EXCELの「図形描画」ツールバーにあるテキストボックスを作成し、その中に文字を書き込むという作業をVBで行いたいのですが、作成方法が分かりません。 (1)Dim.... (2)Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) ※ここで作成したい (3)保存作業 (4)閉じる OLEObjectsあたりを使うのではないかと思い、色々試したのですがダメでした。 ご存じの方、是非ご教授ください。 開発環境:WinXpPro(SP2)+VB6(SP6)

専門家に質問してみよう