Excel VBA質問箱 IV

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

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


57869 / 76738 ←次へ | 前へ→

【23603】Re:「ピクチャーが不正です」が出てしまう
発言  ichinose  - 05/3/29(火) 23:57 -

引用なし
パスワード
   ▼さんい さん:
こんばんは。

>userformの中に画像を貼り付けるマクロを記入して実行させると
>
>実行時エラー’481’:
>ピクチャーが不正です。
>
>というエラーが出てしまいます。元画像のbmpを変換してjpgにしても同様な結果がでますが、
>画像の変換結果によっては同じjpgでも、うまくマクロが働き成功する時もあります。
>何が問題なのでしょうか?
>ちなみにマクロは下記のように記述しています。
>
>Image4.Picture = LoadPicture(ThisWorkbook.Path & "\画像.png")
Pngファイルは、対象外みたいですね!!

こちらで確認した限りでは、Jpgファイルは正常に表示されていますよ!!

Jpgファイルでも不具合がある理由はわかりませんが、
うまくいかない場合は、ExcelやWindowsのバージョンを記述して下さいね!!
bykinさんの

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=5411;id=excel

を真似て
以下のようにしてみましたが・・・。

新規ブックにユーザーフォーム(Userform1)に

イメージコントロール(Image1)とコマンドボタン(Commandbutton1)を
ひとつづつ配置してみてください。
標準モジュールに
'==============================
Sub main()
  UserForm1.Show
End Sub


Userform1のモジュールに
'=========================================================
Private Sub UserForm_Initialize()
  Image1.Enabled = False
' こうしておかないとイメージコントロールをクリックすると
' 動作がおかしい(画像が表示されない)
End Sub
'================================================
Private Sub CommandButton1_Click()
  On Error Resume Next
  ans = Application.GetOpenFilename("ピクチャーファイル*.png,*.png;*.jpg;*.gif;*.bmp")
  If ans <> False Then
   Image1.Picture = LoadPicture(ans)
   If Err.Number <> 0 Then 'Pngを選択した場合、Jpgで保存
     Call mk_jpg(ans, ThisWorkbook.Path & "\temp.jpg", ActiveSheet)
     Image1.Picture = LoadPicture(ThisWorkbook.Path & "\temp.jpg")
     Kill ThisWorkbook.Path & "\temp.jpg"
     End If
   End If
  Me.Hide
'こうしないとExcel2000ではユーザーフォームがモーダルからモーダレスに代わってしまう
  Me.Show
End Sub
'======================================================================
Sub mk_jpg(inflnm, otflnm, sht As Worksheet)
  Charts.Add
  ActiveChart.Location Where:=xlLocationAsObject, Name:=sht.Name
  Set shp = ActiveChart.Pictures.Insert(inflnm)
  shp.Top = 0: shp.Left = 0
  With sht.ChartObjects(1)
   .Interior.ColorIndex = xlNone
   .Border.LineStyle = xlLineStyleNone
   .Width = shp.Width
   .Height = shp.Height
   .Chart.Export Filename:=otflnm, Filtername:="JPG"
   .Delete
   End With
End Sub

コマンドボタンのクリックで画像を選択するようになっています。


Pngファイルを別形式に他のアプリで変換するのであれば
上記のようなコードは要りませんが・・・。

試してみてください。
5 hits

【23590】「ピクチャーが不正です」が出てしまう さんい 05/3/29(火) 14:23 質問
【23603】Re:「ピクチャーが不正です」が出てしまう ichinose 05/3/29(火) 23:57 発言
【23605】jpgの圧縮率によって異なるのでしょうか? さんい 05/3/30(水) 1:56 質問
【23616】Re:jpgの圧縮率によって異なるのでしょうか... ichinose 05/3/30(水) 14:08 発言
【23619】Re:jpgの圧縮率によって異なるのでしょう... さんい 05/3/30(水) 16:08 お礼

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