2017-05-08 51 views
0

我想根據單元格值將圖片插入到excel中。單元格值位於圖像路徑中。我是新人,我的部分基礎是錄製宏觀,一部分基於觀點。這就是我想...VBA動態圖片

我一直在ActiveSheet.Pictures.Insert

Sub Part_Picture() 
' 
' Part_Picture Macro 
' 
Dim imageName As String 
Dim imageFolder As String 
Dim imagePath As String 

For Each Cell In Range("B7") 
    imageName = Cell.Value 
    imageFolder = "Q:\New Project Part Folders\Elizabeth Delgado\Database pictures\Part\" & imageName 
    imagePath = imageFolder & ".jpg" 

    Range("B11").Select 
    ' 
    ActiveSheet.Pictures.Insert(imagePath).Select 
Next Cell 
End Sub 
+3

有什麼問題嗎?什麼是代碼沒有做到你想要的?如果您希望代碼將圖片放置在工作簿的不同區域,請告訴我們您要如何插入它們......即 - 每8行或某物。 –

+4

擺脫所有的'.Select'的東西,這是宏記錄器毒藥通過模仿錄製的每一個單一的用戶動作教你錯誤的東西。例如在'Range'(「B7:G9」)''中聲明'cell'變量(在模塊的頂部指定'Option Explicit') - 然後是的,問一個明確的問題,可以回答。 –

+1

@ Mat'sMug「宏觀記錄器毒藥」 - 我喜歡那個詞組,雖然我可能更喜歡將「crud」改爲「poison」(保留「poison」用於'On Error Resume Next'的全部使用)。 –

回答

0

「無法獲得圖片類的插入財產」得到一個錯誤是一般性的錯誤信息,您不妨只是翻譯爲「您嘗試做的事情出了問題,我無法給您提供更多信息」。很可能,圖像文件的路徑尚未正確構建。

1)從插入語句中刪除.Select。從句法上來說它沒有任何意義。只需使用ActiveSheet.Pictures.Insert(imagePath)

2)檢查單元格B7中的值是僅文件名,不包括擴展名。由於您的代碼添加了「.jpg」,因此您在B7中不需要該代碼。

3)檢查該文件實際上是一個JPG,而不是例如一個PNG

4)檢查文件/文件夾實際存在

僅供參考For Each Cell In Range("B7"),只是要遍歷一個細胞 - B7 - 並且是不必要。如果您只打算讀取一個單元格,則應該使用imageName = Range("B7").Value,或者更好,因爲您需要使用字符串imageName = Range("B7").Text

+0

非常感謝@absinthe我做了#1更改,然後在FYI中提出了更改,並且它完美地工作! – ca2ky

0

請考慮此選項。

Sub InsertPics() 
Dim fPath As String, fName As String 
Dim r As Range, rng As Range 

Application.ScreenUpdating = False 
fPath = "C:\your_path_here\" 
Set rng = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) 
i = 1 

For Each r In rng 
    fName = Dir(fPath) 
    Do While fName <> "" 
     If fName = r.Value Then 
      With ActiveSheet.Pictures.Insert(fPath & fName) 
       .ShapeRange.LockAspectRatio = msoTrue 
       Set px = .ShapeRange 
       If .ShapeRange.Width > Rows(i).Columns(2).Width Then .ShapeRange.Width = Columns(2).Width 
        With Cells(i, 2) 
         px.Top = .Top 
         px.Left = .Left 
         .RowHeight = px.Height 
        End With 
      End With 
     End If 
     fName = Dir 
    Loop 
    i = i + 1 
Next r 
Application.ScreenUpdating = True 
End Sub 

「注意:您需要的文件擴展名,例如」,JPG」,或任何你正在使用,所以你可以匹配上。

你把A列無論圖片名稱,將被導入到相鄰的單元格,列B