批量將圖片插入到Excel工作表

2021-03-02 Excel之家ExcelHome

我們今天分享的內容是按指定名稱和位置批量將圖片插入到Excel工作表中……這個問題後臺提問的朋友太多了,趕緊分享了事。

看個動畫先:

代碼如下:

Sub InsertPic()

    'ExcelHome VBA編程學習與實踐 by:看見星光

    Dim Arr, i&, k&, n&, pd&

    Dim PicName$, PicPath$, FdPath$, shp As Shape

    Dim Rng As Range, Cll As Range, Rg As Range, book$

    'On Error Resume Next

    '用戶選擇圖片所在的文件夾

    With Application.FileDialog(msoFileDialogFolderPicker)

        .AllowMultiSelect = False '不允許多選

       If .Show Then FdPath = .SelectedItems(1) Else: Exit Sub

    End With

    If Right(FdPath, 1) <> "\" Then FdPath = FdPath & "\"

    Set Rng = Application.InputBox("請選擇圖片名稱所在的單元格區域", Type:=8)

    '用戶選擇需要插入圖片的名稱所在單元格範圍

    Set Rng = Intersect(Rng.Parent.UsedRange, Rng)

    'intersect語句避免用戶選擇整列單元格,造成無謂運算的情況

    If Rng Is Nothing Then MsgBox "選擇的單元格範圍不存在數據!": Exit Sub

    book = InputBox("請輸入圖片偏移的位置,例如上1、下1、左1、右1", , "右1")

    '用戶輸入圖片相對單元格的偏移位置。

    If Len(book) = 0 Then Exit Sub

    x = Left(book, 1) '偏移的方向

    If InStr("上下左右", x) = 0 Then MsgBox "你未輸入偏移方位。": Exit Sub

    y = Val(Mid(book, 2)) '偏移的尺寸

    Select Case x

        Case "上"

        Set Rg = Rng.Offset(-y, 0)

        Case "下"

        Set Rg = Rng.Offset(y, 0)

        Case "左"

        Set Rg = Rng.Offset(0, -y)

        Case "右"

        Set Rg = Rng.Offset(0, y)

    End Select

    Application.ScreenUpdating = False

    Rng.Parent.Select

    For Each shp In ActiveSheet.Shapes '如果舊圖片存放在目標圖片存放範圍則刪除

        If Not Intersect(Rg, shp.TopLeftCell) Is Nothing Then shp.Delete

    Next

    x = Rg.Row - Rng.Row: y = Rg.Column - Rng.Column

    '偏移的坐標

    Arr = Array(".jpg", ".jpeg", ".bmp", ".png", ".gif")

    '用數組變量記錄五種文件格式

    For Each Cll In Rng

    '遍歷選擇區域的每一個單元格

        PicName = Cll.Text '圖片名稱

        If Len(PicName) Then '如果單元格存在值

            PicPath = FdPath & PicName '圖片路徑

            pd = 0 'pd變量標記是否找到相關圖片

            For i = 0 To UBound(Arr)

            '由於不確定用戶的圖片格式,因此遍歷圖片格式

                If Len(Dir(PicPath & Arr(i))) Then

                '如果存在相關文件

                    ActiveSheet.Pictures.Insert(PicPath & Arr(i)).Select

                    '插入圖片並選中

                    With Selection

                        .ShapeRange.LockAspectRatio = msoFalse

                        '撤銷鎖定縱橫比

                        .Top = Cll.Offset(x, y).Top + 5

                        .Left = Cll.Offset(x, y).Left + 5

                        .Height = Cll.Offset(x, y).Height - 10 '圖片高度

                        .Width = Cll.Offset(x, y).Width - 10 '圖片寬度

                    End With

                    pd = 1 '標記找到結果

                    n = n + 1 '累加找到結果的個數

                    [a1].Select: Exit For '找到結果後就可以退出文件格式循環

                End If

            Next

            If pd = 0 Then k = k + 1 '如果沒找到圖片累加個數

        End If

    Next

    MsgBox "共處理成功" & n & "個圖片,另有" & k & "個非空單元格未找到對應的圖片。"

    Application.ScreenUpdating = True

End Sub

代碼已有注釋,這兒就再說明一下運行過程。

首先,會讓用戶選擇存放圖片的文件夾。注意是選擇文件夾,不是選擇圖片;選擇文件夾後,看不到文件夾內的圖片是正常現象。

然後,選擇圖片名稱存放的單元格區域,可以選擇整列、多列、整行或多行,比如示例動畫中的B:D列,2:2行等。。

最後,設置圖片相對於圖片名稱所在的單元格便宜的位置;比如圖片名稱在B列,圖片放在C列,那就是向右偏移1列,即右1。上下左右代表了方向,數字代表偏移的量。

代碼繼續運行,先刪除存放於放置圖片單元格範圍的原圖片圖形(如何用代碼刪除指定位置的圖形圖片?這個問題也不要在後臺提問了),然後遍歷圖片名稱,根據偏移位置插入新圖片。

代碼運行結束後會告之用戶一共成功插入了多少張圖片,以及失敗了多少張:

小貼士:

1,該段小代碼支持一下圖片格式:

".jpg", ".jpeg", ".bmp", ".png", ".gif"

2,圖片的縱橫比是未鎖定的,如需鎖定,可以注釋掉下句代碼:

.ShapeRange.LockAspectRatio = msoFalse

3,圖片的行高和列寬是由放置圖片的單元格行高和列寬決定的。當然,您也可以把代碼稍微修改,設置固定的圖片行高和列寬,並由圖片的行高和列寬決定單元格的大小。

4,圖片的名稱必須和指定單元格範圍內的名稱一致,如果需要模糊匹配,使用DIR函數搭配通配符的方式即可。

5,還有什麼……想不起來了,就先醬紫吧,揮手致安~

嗯,以下是示例文件~.

https://pan.baidu.com/s/1ClgLjzXe0K9WOIPbxDPDhg#list/path=%2F

圖文作者:看見星光

相關焦點

  • 「Excel技巧」用VBA法給單元格批量插入圖片批註
    上一篇文章跟大家介紹的是excel單元格如何手動插入圖片批註。但是在表格產品比較多,想要全部插入圖片批註的情況下,手動一個個插入的方法就不可取了。我們說了,只要思想不滑坡 辦法總比困難多。這時,我們就要考慮更高效的辦法,比如:批量插入圖片批註。關鍵如何實現?
  • 如何在excel中批量新建工作表?
    今天網絡推廣培訓小編要說的就是批量新建工作表,大家可以跟著小編來操作一下。首先我們需要打開excel軟體,在工作表中輸入批量新建工作表的名稱,如圖所示: 數據輸入完成後,我們就可以選中所有數據,單擊「插入」選項卡,選擇「數據透視表」按鈕。
  • Excel技巧:如何批量插入指定名稱的工作表
    之前給大家說過,如何批量的創建指定名稱的文件夾,相信大家都學會了。那你們知不知道如何批量插入指定名稱的工作表呢?一個個的插入,再去一個個的修改名稱既麻煩又容易出錯,今天小鷹就為你們帶來了這個技巧,趕緊收藏起來吧。
  • 如何快速批量刪除excel工作表中的圖片
    在工作中,有沒有遇到需要刪除excel工作表的大量圖片的時候,手動一張一張刪除會耗費大量時間,效率非常慢。那有什麼快速又簡單的方法可以批量刪除這些圖片嗎?下面我給你講解的方法,可以讓你很快就學會,工作起來事半功倍。
  • 批量新建excel工作表以及工作薄,再也不用一個一個的新建了
    Hello,大家好,今天跟大家分享下我們如何批量新建excel工作表以及工作薄,對於工作表與工作薄很多人可能都分不清。工作薄就是我們常說的excel文件,而工作表就是工作薄中的sheet,所以說工作表是包含在工作薄中的。
  • excel數據透視表:利用數據透視表一次批量生成工作表
    工作中有時候需要批量生成工作表,像下圖,今天就講解利用數據透視表一次批量生成工作表。1、在excel工作表中輸入要批量生成的工作表的名稱。2、插入數據透視表。點擊工具欄插入—數據透視表。3、在表/區域選擇要生成工作表名稱的區域,數據透視表放置位置選擇現有工作表,位置可任意選擇,這裡選擇E12。點擊確定。4、在右側數據透視表欄位對話框,將欄位部門拖動到篩選器。5、依次點擊數據透視表工具—分析—選項—顯示報表篩選頁。在彈出的對話框中點擊確定。
  • Excel批量插入圖片,並設置圖片超連結
    涉及知識點:批量插入圖片Sub 插入圖片存在的時候才插入圖片,否則會報錯。 '使用AddPicture方法,將圖片插入單元格,並將圖片的大小設置成和單元格一致。,圖片不能隨文件一起保存,所以建議用AddPicture方法插入圖片。
  • excel中批量插入對應名稱的圖片,其實很簡單,僅需3步搞定
    Hello.大家好,昨天有粉絲留言說如何在excel中批量插入圖片?他有很多張命名好的圖片,想要在excel中根據姓名在旁邊插入對應的圖片,自己一個一個做了好久,有沒有快速的方法,當然有了,今天就跟大家分享一種批量插入圖片的方法,下面就讓我們來一起操作下吧一、獲取圖片名稱首先我們需要將所有的圖片都放在一個文件夾中,在地址欄複製這個文件夾的路徑
  • excel根據目錄新建工作表及工作薄,再也不用一個一個的製作了
    Hello,大家好,今天跟大家分享下我們如何根據目錄批量的新建工作表以及工作薄,這是一個粉絲提問的問題,要求根據姓名批量的新建工作表以及工作薄,開始之前先跟大家講解什麼是工作表以及工作薄,因為真的有很多人都分不清這兩個的區別
  • 提升效率神器——Excel批量取消隱藏工作表
    我們可以按住Ctrl鍵,用滑鼠分別選取需要隱藏的工作表標籤(如果所隱藏是連續的表格,可以使用Shift鍵),使之成為一個工作表組合,然後通過右鍵菜單的【隱藏】功能,將該工作表組合中的工作表一次性隱藏起來~
  • excel中如何批量創建工作表?
    在工作中,有時候我們需要一次性新建很多工作表或者工作簿,如果一個一個創建然後再重命名那就太費時間了,下面就看看如何方便快捷地創建多個工作表或者工作簿吧。一、批量新建工作表。最終要實現下圖創建多個工作表的效果,該如何操作呢?
  • 「Excel使用技巧」鮮為人知的Excel技巧-批量刪除隱藏的工作表
    手裡有一份Exce文件,裡面隱藏了幾十個已經不需要的工作表,對於強迫症患者來說,留著它們著實有點不舒服。想著一定要把它們刪除,工作文件才顯得比較乾淨。但問題來了,這麼多隱藏的工作表一個個刪除還是很費力氣,首先我得一個工作表一個工作表的取消隱藏,然後才能刪除。
  • excel如何將一張工作表按篩選欄位拆分到多個工作表?
    我們在製作excel表格時,很多情況數據是放在一張工作表的,而且查詢也是在一張工作表裡,有時候我們希望能夠根據篩選的條件,將工作表拆分成多張工作表,如果一個個篩選然後複製到多個標籤表是很麻煩的,那麼如何能夠快速將一張工作表拆分成多個呢?下面就來看看吧。一、打開一份測試表格,我們希望根據部門將張拆分到多張工作表,每個工作表顯示一個部門數據。
  • Excel技巧:一鍵快速批量排序工作表,值得你去收藏!
    雙擊Thisworkbook,打開代碼編輯器,複製下面代碼到代碼編輯窗口,然後回到之前的Excel界面。>第四步:插入控制項。再插入和之前一樣的控制項,將其命名為批量排序工作表,插入控制項後會自動跳出指定宏窗口,選擇Thisworkbook.sortsheet,點擊確定;第九步:排序工作表。
  • Excel表格中,如何批量插入圖片?
    我們今天分享的內容是按指定名稱和位置批量將圖片插入到
  • EXCEL中如何批量為每個人建立一個工作表
    今天小編為大家介紹兩種批量建立工作表的方法,希望在工作中能幫助到大家,提升大家的工作效率。通過數據透視表第①步:準備好需要批量建表的名稱,如下圖所示:第②步:點擊插入數據透視表(新工作表中);第③步:將「姓名」欄位拖到「篩選」區間;
  • 三分鐘學會excel批量插入圖片
    插入圖片有位朋友諮詢如何根據條件在excel表格中指定位置插入圖片。這節課給大家分享插入圖片的技巧。案例分析:要求在G列輸入產品名稱後,在a~f列插入對應圖片。有可能一個名稱對應幾張照片1和2等等......
  • Excel | VBA(12)—批量導出圖片並重命名
    問題情境一位粉絲朋友問了一個問題:如何將工作表的圖片批量導出比如下圖:要將工作表中的圖片批量導出,並且重新命名為B列對應的名稱如下圖:在工作表中添加表單控制項」文件夾,所以導出的圖片實現重命名並保存在該「圖片」文件夾中。
  • 職場辦公小技巧:在word中批量插入圖片並統一命名
    今天小編就跟大家分享一個超級簡單的辦法:一、批量導入圖片:創建表格1、點擊插入——表格——選擇兩列一行即可2、全選表格後右鍵設置屬性——點擊選項——取消自動重調尺寸以適應內容——點擊確定3、將滑鼠放在第一個單元格內——點擊插入——圖片——按住ctrl+a全選圖片——插入4、看一下效果,圖片是不是都在一列了
  • Excel批量創建工作表,提高效率才是硬道理
    在我們日常工作中,經常遇到一次要創建多個工作表,比如財務報表、考勤表等,一年需要十二個工作表, 一次性創建完成,可以省去一個個創建的麻煩,今天小編分享兩種方法:方法一:數據透視表>1、首先在A列中錄入我們需要新建的工作表名稱;2、選中數據列,點擊【插入】選項卡中的【數據透視表】按鈕,在彈出的窗口中,選擇放置數據透視表的位置,選擇【現有工作表】,點擊位置文本框,再點擊工作表任意單元格;3、在工作區右側彈出的任務窗格中,把【工作表名稱】欄位拖入篩選區域;4、點擊