Filed under: Excel VBA 範例, shape

註解裡顯示超鏈接的圖片

by chijanzen on 十一月 25th, 2008 | View: 4,849 views

Tags
  • No Tags
Share Comments (8)
索   引 C0015
主   題 >= 12.0(Office 2007)
版   本 註解裡顯示超鏈接的圖片
說   明 本範例試範如何將圖片匯入註解中,及依圖片的大小來調整註解的尺寸。
參   考


複製以下程式碼到Module

Code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 2 Then Exit Sub
    Set rng = Range("A3:A9")    '設定範圍
    If Union(rng, Target).Address = rng.Address Then
    '保留前一個 Target 儲存格
        Static chkrange As Range
        '刪除前一個註解
        If Not chkrange Is Nothing Then
            chkrange.Comment.Delete
        End If
        Dim cmt As Comment
        Dim jpgImg As Object
        Application.EnableEvents = False
        Set chkrange = Target
        Set hasComment = Target.Comment
        '判斷儲存格是否有註解
        If hasComment Is Nothing Then
            Set cmt = Target.AddComment
        Else
            Set cmt = Target.Comment
        End If
        '圖片填滿註解
        fname = ThisWorkbook.Path & "\" & Target
        '取得圖片的 高度及寬度
        Set jpgImg = CreateObject("WIA.ImageFile")
        jpgImg.LoadFile fname
        cmt.Shape.Fill.UserPicture fname
        cmt.Shape.Height = jpgImg.Height
        cmt.Shape.Width = jpgImg.Width
        '顯示註解
        Application.DisplayCommentIndicator = xlCommentIndicatorOnly
        Application.EnableEvents = True
    End If
End Sub
 

File download

Code

檔案下載

Popularity: 18%

About the Author
    網路化名: chijanzen、中國龍、邪兵衛 經歷: 第二屆微軟社群之星 第三屆微軟「最有價值專家」 第五屆微軟「最有價值專家」
Leave a Comment »8 Comments
  • Reply » Stephen 七月 24, 2009

    問題解決了, 謝謝回覆.

  • Reply » chijanzen 七月 6, 2009

    你好:

    第一篇 allall 的帖子回覆已解答了

  • Reply » stephen 七月 6, 2009

    Hi chijanzen, 我很想用這個程式C0015, 但是圖片都不能匯入註解中, 出現錯誤訊息 "執行階段錯誤'429': ActiveX 元件無法產生物件", 偵錯後, 中斷在 --
    Set jpgImg = CreateObject("WIA.ImageFile"), 請問什麼原因, 怎麼辦? 謝謝幫忙
    Stephen

  • Reply » alittlehotboy 十二月 26, 2008

    chijanzen大大你這程式碼好像沒用耶
    圖片加入 檔案還是一直變大阿

  • Reply » alittlehotboy 十二月 26, 2008

    感謝chijanzen大大的幫忙
    但要如何修改這個程式碼
    使得不會我每次按範圍內的儲存格
    他就會秀一次圖
    能否改成一開啟這個檔他就自己執行
    謝謝

  • Reply » chijanzen 十二月 25, 2008

    你好:
    請替換為以下程式碼

    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

  • Reply » alittlehotboy 十二月 24, 2008

    我想請問大大一個問題
    如果我要作到將圖片在excel中顯示
    但圖片並沒存在excel檔案中
    這樣是否可以作到
    謝謝

  • Reply » allall 十一月 28, 2008

    程式碼中引用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

Get a GravatarLeave a Reply

Name: « Required

Email Address: « Required

Website URL: « Optional

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

About me
chijanzen 分享個人Excel VBA 學習經驗,架站心得, 日常生活記事等...

Add to Google

分類
Translator
Chinese (Simplified) flagItalian flagKorean flagEnglish flagGerman flag
French flagJapanese flagRussian flagBulgarian flagFinnish flag
相簿