2012-12-08 53 views
1

我有一個Excel表格,其中列A中有一個產品代碼列表。我也有一個文件夾,每個產品的圖片和圖片的文件名是產品代碼。我想將各個產品的圖片放在B列旁邊各自的代碼中。如果可能的話,我也想重新格式化這些圖片,以便它們適合單元格。VBA - Excel - 如何檢索匹配文件名上的照片並將它們放在單元格中

我真的不知道從哪裏開始,任何幫助將不勝感激!謝謝

+0

'我真的不知道從哪裏開始'...如何在手動完成步驟時使用宏記錄器。然後閱讀如何遍歷範圍中的單元格以及如何操縱字符串以獲取文件名。最後,閱讀對象的「頂部」和「左側」屬性(包括單元格)。 –

+0

您的主要需求是什麼?重新格式化圖像或將它們拉到他們的產品旁邊? – bonCodigo

+0

我的主要需求是將他們拉到他們的產品旁邊。重新格式化圖像將是一個加號 – user1783504

回答

1

這是一個代碼開始。請在你身邊測試一下。

Sub AddPictures() 
Dim myPic As Picture 
Dim wkSheet As Worksheet 
Dim myRng As Range 
Dim myCell As Range 
Dim rowCount As Long 
Dim rowCount2 As Long 

    Set wkSheet = Sheets(2) ' -- Change to your sheet 

    '-- The usual way of finding used row count for specific column 
    rowCount2 = wkSheet.Cells(wkSheet.Rows.Count, "C").End(xlUp).Row 

    If rowCount2 <> 0 Then 
     Set myRng = wkSheet.Range("C2", wkSheet.Cells(wkSheet.Rows.Count, "C").End(xlUp)) 

     For Each myCell In myRng.Cells 
       If Trim(myCell.Value) = "" Then 
        MsgBox "No file path" 
       ElseIf Dir(CStr(myCell.Value)) = "" Then 
        MsgBox myCell.Value & " Doesn't exist!" 
       Else 
        myCell.Offset(0, 1).Parent.Pictures.Insert (myCell.Value) 
        Set myPic = myCell.Parent.Pictures.Insert(myCell.Value) 

        With myCell.Offset(0, 1) '1 columns to the right of C (is D) 
         '-- resize image here to fit into the size of your cell 
         myPic.Top = .Top 
         myPic.Width = .Width 
         myPic.Height = .Height 
         myPic.Left = .Left 
         myPic.Placement = xlMoveAndSize 
        End With 
       End If 
     Next myCell 

    Else 
     MsgBox "There is no file paths in your column" 
    End If 
End Sub 

輸出:

enter image description here


PS:設定範圍,根據自己的值的文件路徑。如果您需要在整個工作表中搜索使用的REAL列和行,請告訴我。我可以分享一個功能。現在你只需要在特定的文件路徑列中找到使用過的行,所以上面典型的使用行數就足夠了。

+0

我明天會測試並給你反饋。感謝bonCOdigo – user1783504

+0

嘿!有用!!!!非常感謝!!!我會盡力從這裏改進代碼。但這是自週五以來的第一次。我在想你在哪裏學習VBA?我沒有編程背景,但我需要爲我的工作學習它。我讀VBA的傻瓜和Excel電源編程,但我剛剛瞭解的基礎知識。你知道我可以通過VBA在線改進嗎?再次感謝。你讓我今天一整天都感覺很好!! – user1783504

+0

我很高興你能解決這個問題:)我在工作中學到了VBA。但我確實有編程背景。但是,如果你付出了很多努力,這應該不重要。 Excel Power Programming很適合你。嘗試編寫自己的程序,以解決過去在這裏提出的問題。 (從基本的開始,並確保這些問題已經得到解答 - 所以你在驗證的輸出中得到某種保證)。你在哪個領域使用VBA?無論如何照顧足以標記答案,所以系統得到更新以及:)? – bonCodigo

相關問題