Chèn hình vào ScreenTip

Liên hệ QC

thnghiachau

Chỉ biết ngồi BÈ và PHÁN chuyện!!!
Tham gia
14/9/09
Bài viết
844
Được thích
707
Giới tính
Nam
Nghề nghiệp
Search
Chào cả nhà GPE,
Không biết có cách nào làm được điều này bằng VBA excel không vậy?

1591947162434.png

tức là cái ScreenTip (trong Hyperlinks) thay vì là chữ là mình thay bằng hình ah.
Hoặc bằng bất cứ phương cách nào cũng được (không nhất thiết Hyperlinks) sao cho khi chuột trỏ vào thì hiện hình ảnh ra.

Cám ơn cả nhà.
 
Có cách rất hay và đơn giản là chèn hình vào comment là xong.

1591948454630.png
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Có cách rất hay và đơn giản là chèn hình vào comment là xong.

View attachment 239183
Anh @befaint ơi cho em hỏi tí...
Mã:
                With Range("C" & iR).AddComment
                    .Visible = True
                    .Text Text:=""
                    .Shape.Fill.UserPicture PicFullName
                    .Shape.ScaleHeight 2, msoFalse, msoScaleFromTopLeft
                    .Shape.ScaleWidth 1.55, msoFalse, msoScaleFromTopLeft
                    .Visible = False
                End With
với code trên, em scale size lại cái pic thì dung lượng có nhỏ hơn không anh? tại e kiểm tra tấy hình như nó bê nguyên si cái hình thiệt vào chỉ có sacle kích thước lại chứ không có giảm dung lượng ??
nếu đúng vậy thì mình có cách nào giảm dung lượng cái Pic cùng với scale kích thước không ah?
Cám ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
Anh @befaint ơi cho em hỏi tí...
Mã:
                With Range("C" & iR).AddComment
                    .Visible = True
                    .Text Text:=""
                    .Shape.Fill.UserPicture PicFullName
                    .Shape.ScaleHeight 2, msoFalse, msoScaleFromTopLeft
                    .Shape.ScaleWidth 1.55, msoFalse, msoScaleFromTopLeft
                    .Visible = False
                End With
với code trên, em scale size lại cái pic thì dung lượng có nhỏ hơn không anh? tại e kiểm tra tấy hình như nó bê nguyên si cái hình thiệt vào chỉ có sacle kích thước lại chứ không có giảm dung lượng ??
nếu đúng vậy thì mình có cách nào giảm dung lượng cái Pic cùng với scale kích thước không ah?
Cám ơn anh.
Muốn nhỏ thì tốt nhất hiệu chỉnh trước khi chèn vào là cách đơn giản nhất
Còn dùng code xử lý thì lại liên quan đến file media
 
Upvote 0
Muốn nhỏ thì tốt nhất hiệu chỉnh trước khi chèn vào là cách đơn giản nhất
Còn dùng code xử lý thì lại liên quan đến file media

ÔI... em mới tìm ra cách tạo thumbnail nè anh!
  • create a temp Worksheet
  • create a shape and load the picture to it and resize the picture
  • create a temp Chart and paste the re-sized picture onto it
  • export the Chart to a temp file
  • delete the temp Worksheet
  • load the temp file to the Comment
  • delete the temp file
(Xin mạn phép chép nguyên bản bằng tiếng Anh)
Giờ em đang theo hướng dẫn này làm ra

PS: Em đã chận từ đầu là chỉ làm trên file PICTURE mà thôi.
 
Upvote 0
Office có sẵn phần mềm Picture manager cho phép chỉnh sửa ảnh hàng loạt.
Ấn 2-3 phát là xong hết cảm cụm.
 
Upvote 0
Muốn nhỏ thì tốt nhất hiệu chỉnh trước khi chèn vào là cách đơn giản nhất
Còn dùng code xử lý thì lại liên quan đến file media
Chào GPE,
Em đã làm được code tạo thumbnail và insert vào comment, các thầy xem giúp em với.
Mã:
Option Explicit

Sub InsertPicToComment()
Dim strFileThumbnail As String
    strFileThumbnail = CreateThumbnail("D:\Temp\Pic\IMG_0105.JPG", Sheet1, 100, 100)
    If Not Sheet1.Range("C5").Comment Is Nothing Then Sheet1.Range("C5").Comment.Delete
    With Sheet1.Range("C5").AddComment
        .Visible = True
        .Text Text:=""
        .Shape.Fill.UserPicture strFileThumbnail
        .Shape.ScaleHeight 2, msoFalse, msoScaleFromTopLeft
        .Shape.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft
        .Visible = False
    End With
    Kill strFileThumbnail
End Sub

Function CreateThumbnail(ByVal strFilePic As String, ByVal wksSheet As Worksheet, _
                         ByVal lngThumb_Width As Long, ByVal lngThumb_Height As Long) As String

    ' input jpg and temp file path
    Dim strFileThumbnail As String
    Dim strFolderPic As String
    With CreateObject("Scripting.FileSystemObject")
        strFolderPic = .GetParentFolderName(strFilePic)
        If Right(strFolderPic, 1) <> "\" Then strFolderPic = strFolderPic & "\"
        strFileThumbnail = strFolderPic & .GetBaseName(strFilePic) & "_Thumb." & .GetExtensionName(strFilePic)
    End With
   
    ' load picture to shape and RESIZE
    Dim oShapePic As Shape
    Set oShapePic = wksSheet.Shapes.AddPicture(Filename:=strFilePic, LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _
                                                  Left:=20, Top:=20, Width:=lngThumb_Width, Height:=lngThumb_Height)

    ' create a chart
    Dim oChart As Chart
    Set oChart = wksSheet.Shapes.AddChart(xlColumnClustered, Width:=lngThumb_Width, Height:=lngThumb_Height).Chart
   
    ' copy shape picture to chart and export to file thumbnail
    oShapePic.Copy
    oChart.Paste
    oChart.Export Filename:=strFileThumbnail, FilterName:="jpg"
     
    ' Delette shape picture to chart After export to file thumbnail
    oShapePic.Delete
    oChart.Parent.Delete
   
    CreateThumbnail = strFileThumbnail

End Function

Vấn đề là: khi em nhấn nút "Insert Picture to Comment" thì hình không load vào được Comment, nhưng nếu chạy debug F8 thì load được thumbnail vào comment!!! thật là lạ?! Em tìm lý do hoài cả ngày mà vẫn không tìm dc nguyên nhân ah.
Mong các thầy(@ndu96081631 ,@huuthang_bd ......) và anh em giúp em với.

Cám ơn cả nhà...
 

File đính kèm

  • CreateThumbnail-GPE.xlsm
    19.6 KB · Đọc: 13
Upvote 0
Chào GPE,
Em đã làm được code tạo thumbnail và insert vào comment, các thầy xem giúp em với.
Mã:
Option Explicit

Sub InsertPicToComment()
Dim strFileThumbnail As String
    strFileThumbnail = CreateThumbnail("D:\Temp\Pic\IMG_0105.JPG", Sheet1, 100, 100)
    If Not Sheet1.Range("C5").Comment Is Nothing Then Sheet1.Range("C5").Comment.Delete
    With Sheet1.Range("C5").AddComment
        .Visible = True
        .Text Text:=""
        .Shape.Fill.UserPicture strFileThumbnail
        .Shape.ScaleHeight 2, msoFalse, msoScaleFromTopLeft
        .Shape.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft
        .Visible = False
    End With
    Kill strFileThumbnail
End Sub

Function CreateThumbnail(ByVal strFilePic As String, ByVal wksSheet As Worksheet, _
                         ByVal lngThumb_Width As Long, ByVal lngThumb_Height As Long) As String

    ' input jpg and temp file path
    Dim strFileThumbnail As String
    Dim strFolderPic As String
    With CreateObject("Scripting.FileSystemObject")
        strFolderPic = .GetParentFolderName(strFilePic)
        If Right(strFolderPic, 1) <> "\" Then strFolderPic = strFolderPic & "\"
        strFileThumbnail = strFolderPic & .GetBaseName(strFilePic) & "_Thumb." & .GetExtensionName(strFilePic)
    End With
  
    ' load picture to shape and RESIZE
    Dim oShapePic As Shape
    Set oShapePic = wksSheet.Shapes.AddPicture(Filename:=strFilePic, LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _
                                                  Left:=20, Top:=20, Width:=lngThumb_Width, Height:=lngThumb_Height)

    ' create a chart
    Dim oChart As Chart
    Set oChart = wksSheet.Shapes.AddChart(xlColumnClustered, Width:=lngThumb_Width, Height:=lngThumb_Height).Chart
  
    ' copy shape picture to chart and export to file thumbnail
    oShapePic.Copy
    oChart.Paste
    oChart.Export Filename:=strFileThumbnail, FilterName:="jpg"
    
    ' Delette shape picture to chart After export to file thumbnail
    oShapePic.Delete
    oChart.Parent.Delete
  
    CreateThumbnail = strFileThumbnail

End Function

Vấn đề là: khi em nhấn nút "Insert Picture to Comment" thì hình không load vào được Comment, nhưng nếu chạy debug F8 thì load được thumbnail vào comment!!! thật là lạ?! Em tìm lý do hoài cả ngày mà vẫn không tìm dc nguyên nhân ah.
Mong các thầy(@ndu96081631 ,@huuthang_bd ......) và anh em giúp em với.

Cám ơn cả nhà...
Code của bạn tôi test ở máy mình vẫn chạy bình thường. Ngoài ra bạn thử xem cách khác ở link sau:
 

File đính kèm

  • CreateThumbnail-GPE.xlsm
    17.1 KB · Đọc: 14
Upvote 0
Code của bạn tôi test ở máy mình vẫn chạy bình thường. Ngoài ra bạn thử xem cách khác ở link sau:
Cám ơn anh nhiều.
Cái này ngăn gọn và hay quá.
WIA có nhiều cái hay thiệt!!!

--------------------
PS: cái phần kia em thêm dòng oChart.Parent.Activate trước oChart.Paste là OK
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom