|
▼さんい さん:
こんにちは。
>ご返事をしていただきありがとうございます。
>png形式の画像はワークシート内に、
>jpg形式の画像はuserform内に貼り付けられました。ありがとうございます。
>ところで、jpg形式でも画像優先で圧縮形式を小さくした
>画像はいくらjpg形式でも全く画像は現れませんでした。
JPGでいくつかサンプルを作成しましたが、再現は出来ませんでした。
が、私のPCにころがっている複数のgifファイルで画像が現れない
という現象を確認しました。
何が原因なのかはわかりません。
で、対応策としては、前回投稿したように一度JPGに変換して表示する。
'=======================================================
Private Sub CommandButton1_Click()
On Error Resume Next
Me.Hide
DoEvents
ans = Application.GetOpenFilename("ピクチャーファイル*.png,*.png;*.jpg;*.gif;*.bmp")
If ans <> False Then
Call mk_jpg(ans, ThisWorkbook.Path & "\temp.jpg", ActiveSheet)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\temp.jpg")
Kill ThisWorkbook.Path & "\temp.jpg"
End If
Me.Show
End Sub
'==================================================
Private Sub UserForm_Initialize()
With Image1
.Enabled = False
.PictureAlignment = fmPictureAlignmentTopLeft
.PictureSizeMode = fmPictureSizeModeClip
End With
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 + .Chart.ChartArea.Left * 2
.Height = shp.Height + .Chart.ChartArea.Top * 2
' ↑は、やっぱりLeftとTopの分を足しておかないとまずいですね
.Chart.Export Filename:=otflnm, Filtername:="JPG"
.Delete
End With
End Sub
とするか、Imageコントロールを止めて、Webbrowserコントロールを使う方法。
ユーザーフォームにImage1の代わりにWebbrowser1を配置して
'==========================================================
Private Sub CommandButton1_Click()
On Error Resume Next
Me.Hide
DoEvents
ans = Application.GetOpenFilename("ピクチャーファイル*.png,*.png;*.jpg;*.gif;*.bmp")
If ans <> False Then
WebBrowser1.Navigate ans
End If
Me.Show
End Sub
私のPCころがっていたgifファイルはこれでは、表示されました。
また、PngファイルもOKです。
確認してみて下さい。
|
|