|
▼さんい さん:
こんばんは。
>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ファイルを別形式に他のアプリで変換するのであれば
上記のようなコードは要りませんが・・・。
試してみてください。
|
|