Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 2 Then Exit Sub
Dim shp As Shape
Set rng = Range("A3:A9") '設定範圍
If Union(rng, Target).Address = rng.Address Then
'保留前一個 shape
Static chkshp As Shape
On Error Resume Next
chkshp.Delete
Dim cmt As Comment
Dim jpgImg As Object
fname = ThisWorkbook.Path & "\" & Target
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 40, 80, 140, 50)
shp.Fill.UserPicture (fname)
'取得圖片的 高度及寬度
Set jpgImg = CreateObject("WIA.ImageFile")
jpgImg.LoadFile fname
shp.Height = jpgImg.Height
shp.Width = jpgImg.Width
shp.Top = Target(, 2).Top
shp.Left = Target(, 2).Left
Set chkshp = shp
End If
End Sub
問題解決了, 謝謝回覆.
你好:
第一篇 allall 的帖子回覆已解答了
Hi chijanzen, 我很想用這個程式C0015, 但是圖片都不能匯入註解中, 出現錯誤訊息 "執行階段錯誤'429': ActiveX 元件無法產生物件", 偵錯後, 中斷在 --
Set jpgImg = CreateObject("WIA.ImageFile"), 請問什麼原因, 怎麼辦? 謝謝幫忙
Stephen
chijanzen大大你這程式碼好像沒用耶
圖片加入 檔案還是一直變大阿
感謝chijanzen大大的幫忙
但要如何修改這個程式碼
使得不會我每次按範圍內的儲存格
他就會秀一次圖
能否改成一開啟這個檔他就自己執行
謝謝
你好:
請替換為以下程式碼
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 2 Then Exit Sub
Dim shp As Shape
Set rng = Range("A3:A9") '設定範圍
If Union(rng, Target).Address = rng.Address Then
'保留前一個 shape
Static chkshp As Shape
On Error Resume Next
chkshp.Delete
Dim cmt As Comment
Dim jpgImg As Object
fname = ThisWorkbook.Path & "\" & Target
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 40, 80, 140, 50)
shp.Fill.UserPicture (fname)
'取得圖片的 高度及寬度
Set jpgImg = CreateObject("WIA.ImageFile")
jpgImg.LoadFile fname
shp.Height = jpgImg.Height
shp.Width = jpgImg.Width
shp.Top = Target(, 2).Top
shp.Left = Target(, 2).Left
Set chkshp = shp
End If
End Sub
我想請問大大一個問題
如果我要作到將圖片在excel中顯示
但圖片並沒存在excel檔案中
這樣是否可以作到
謝謝
程式碼中引用WIA物件,只要註冊wiaaut.dll即可在舊版的Officel中檢測版主的範例。
詳細請參考Microsoft TechNet的這一篇訊息:
http://www.microsoft.com/taiwan/technet/scriptcenter/resources/qanda/nov05/hey1116.mspx
WIAAutSDK.zip我下載處:
http://www.microsoft.com/downloads/details.aspx?FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29&DisplayLang=en#filelist