2011-09-12 45 views

Trả lời

13

Mã này sẽ chèn một hình ảnh trên bảng hiện tại và vị trí của nó ở tại cell E10:

Set oPic = Application.ActiveSheet.Shapes.AddPicture("d:\temp\mypic.jpg", False, True, 1, 1, 1, 1) 
oPic.ScaleHeight 1, True 
oPic.ScaleWidth 1, True 

oPic.Top = Range("E10").Top 
oPic.Left = Range("E10").Left 
+0

Cảm ơn bạn đã chỉ cho tôi đúng hướng! – danielpiestrak

2

Bạn có thử sử dụng macro recorder?

Đây là những gì nó được sản xuất cho tôi:

Sub Macro1() 

    ActiveSheet.Pictures.Insert ("C:\mypicture.jpg") 

End Sub 

Cũng tấn thông tin sử dụng thuật ngữ tìm kiếm google: "Insert Picture Sử dụng VBA Excel". Mã bên dưới được lấy từ ExcelTiptất cả tín dụng cho tác giả gốc Erlandsen Data Consulting.

Với macro bên dưới, bạn có thể chèn ảnh ở bất kỳ phạm vi nào trong trang tính và chúng sẽ vẫn miễn là ảnh đó vẫn ở vị trí ban đầu.

Hình ảnh có thể được căn giữa theo chiều ngang và/hoặc theo chiều dọc.

Sub TestInsertPicture() 
    InsertPicture "C:\FolderName\PictureFileName.gif", _ 
     Range("D10"), True, True 
End Sub 

Sub InsertPicture(PictureFileName As String, TargetCell As Range, _ 
    CenterH As Boolean, CenterV As Boolean) 
    ' inserts a picture at the top left position of TargetCell 
    ' the picture can be centered horizontally and/or vertically 
    Dim p As Object, t As Double, l As Double, w As Double, h As Double 
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub 
    If Dir(PictureFileName) = "" Then Exit Sub 
    ' import picture 
    Set p = ActiveSheet.Pictures.Insert(PictureFileName) 
    ' determine positions 
    With TargetCell 
     t = .Top 
     l = .Left 
     If CenterH Then 
      w = .Offset(0, 1).Left - .Left 
      l = l + w/2 - p.Width/2 
      If l < 1 Then l = 1 
     End If 
     If CenterV Then 
      h = .Offset(1, 0).Top - .Top 
      t = t + h/2 - p.Height/2 
      If t < 1 Then t = 1 
     End If 
    End With 
    ' position picture 
    With p 
     .Top = t 
     .Left = l 
    End With 
    Set p = Nothing 
End Sub 

Với macro bên dưới, bạn có thể chèn ảnh và phù hợp với bất kỳ phạm vi nào trong trang tính.

Sub TestInsertPictureInRange() 
    InsertPictureInRange "C:\FolderName\PictureFileName.gif", _ 
     Range("B5:D10") 
End Sub 

Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range) 
    ' inserts a picture and resizes it to fit the TargetCells range 
    Dim p As Object, t As Double, l As Double, w As Double, h As Double 
    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub 
    If Dir(PictureFileName) = "" Then Exit Sub 
    ' import picture 
    Set p = ActiveSheet.Pictures.Insert(PictureFileName) 
    ' determine positions 
    With TargetCells 
     t = .Top 
     l = .Left 
     w = .Offset(0, .Columns.Count).Left - .Left 
     h = .Offset(.Rows.Count, 0).Top - .Top 
    End With 
    ' position picture 
    With p 
     .Top = t 
     .Left = l 
     .Width = w 
     .Height = h 
    End With 
    Set p = Nothing 
End Sub 
+3

Chúng tôi chỉ sử dụng giải pháp này, nhưng nó không hoạt động khi hình ảnh bên ngoài được di chuyển hoặc xóa. – danielpiestrak

+0

Sau đó, tại sao không hỏi tôi thay vì bỏ phiếu xuống !! Tôi đã rất vui khi được giúp bạn thêm mã ... – Reafidy

+0

Ồ tôi đã downvoted vì OP đã đề cập rằng các hình ảnh không thể được liên kết để tệp excel có thể được di chuyển nên tôi coi đây là câu trả lời không tốt cho câu hỏi cụ thể này. Xin lỗi, không có hành vi phạm tội có nghĩa là ~ tôi chỉ tham gia trang web này hoạt động khoảng một tuần nay. Có lẽ lần tới tôi sẽ chỉ upvote thôi. – danielpiestrak

Các vấn đề liên quan