「EXCEL」批量載入,自動更新,根據名稱自動添加圖片批註

向客戶展示產品,又想產品間對比,又想帶上外觀圖。領導要看帶人員照片的花名冊,有表格還要有照片;別頭大,今天分享的技巧讓你輕鬆應對,十句VBA,複製過去就能用。不會VBA?easy啦,每一句的實現原理和意思我都會說明白,保證你跟小夥伴炫技的時候能夠頭頭是道。廢話少說,上效果

【序前語】有時候我們要被動的根據產品名稱做報表,一個一個手動輸入產品名稱到excel表太麻煩了,這裡分享一個簡單使用的批處理.bat語句(這句真的短):

@echo off

for /f "delims=" %%a in ('dir /b/a-d/oN *.*') do echo %%a >>文件名表.xls

複製到記事本中,另存為.bat文件,放到需要提取名稱的文件夾中,雙擊,「Duang」,文件名表生成了,演示如下

Advertisements

第一步,製表,按照自己需要的樣式製作表格,即可,我在表中故意添加了沒有圖片的單元格和空白單元格各一個

第二步,VBA寫入添加批註的代碼,實現這一過程的關鍵代碼是AddComment,操作演示如下:

這就成功啦,然後就把剩下的都照著這樣做完就行了,本次分享的內容就到這裡,AOskill 專註於分享Adobe office系列軟體使用技巧.................好吧,菜刀收起來吧,這一步是演示通過什麼原理添加的圖片批註的,用代碼實現這一過程就是:

  • Private Sub worksheet_change(ByVal target As Range) '利用表格變化觸發過程

  • On Error Resume Next '忽略錯誤提示

    Advertisements

  • Dim 批註格 '定義一下關鍵字的名稱

  • For Each 批註格 In Range("c3:c1000") '限定加入批註的單元格位置

  • 批註格.AddComment '插入批註

  • 批註格.Comment.Shape.Fill.UserPicture "E:\產品照片\" & 批註格.Value & ".jpg" '批註格用哪裡的圖片填充

  • 批註格.Comment.Shape.Line.Visible = msoFalse '批註格的框線是否可見

  • 批註格.Comment.Shape.Height = 100 '批註的高度

  • 批註格.Comment.Shape.Width = 120 '批註的寬度

  • Next 批註格

  • End Sub

選擇 開發工具>visual basic ,把這段代碼複製到所在sheet的代碼框里就行了,如果你找不到開發工具在哪,沒事,看這裡(上一篇文章里有提到的):

粘貼代碼演示如下:

為了解決單元格空不添加批註的問題,在第四行代碼上粘貼下列代碼,判斷批註格內是否有內容,如果有,則繼續執行,沒有就結束代碼:

If Not IsEmpty(批註格) Then 『(為了過程和完整,需要在倒數第二行上加入: end if)

為了解決關鍵字沒有對應圖片時不添加批註的問題,我在第五行後邊加上如下代碼,判斷關鍵字是否能找到圖片,如果能,則繼續執行,不能就結束代碼:

  • Dim p

  • p = "E:\產品照片\" & 批註格.Value & ".jpg"

  • If Not Dir(p) = "" Then '(為了過程完整,同樣需要在倒數第二行上加入: end if)

具體演示如下:

這是由於批註的大小是一個限定的固定值導致的,為了解決這個問題,我插入一個picture控制項,用產品圖片填充這個控制項后,讀取圖片的長寬值,然後刪除這個控制項,再利用讀取到的長寬值計算出在不溢出限定範圍內的最優尺寸(這種讀取方式在圖片過多的時候會有點卡電腦,但卻是最容易理解的代碼了,如有好方法的大咖路過,望指點一二),具體代碼如下:

  • ActiveSheet.Pictures.Insert(p).Select '插入一個用產品圖填充的圖片控制項

  • a = Selection.ShapeRange.Height '讀取圖片寬

  • b = Selection.ShapeRange.Width '讀取圖片長

  • Selection.Delete'刪除控制項

  • y = 240 '限定圖片的最大顯示長

  • x = 160 '限定圖片的最大顯示寬

  • sc = Application.WorksheetFunction.Min(y / a, x / b) '取得單元與圖片之間長寬差異比例的最小值

  • 批註格.Comment.Shape.Height = a * sc '按比例調整圖片高度

  • 批註格.Comment.Shape.Width = b * sc '按比例調整圖片寬度

用上述代碼替換 決定批註大小的兩句代碼即可,具體演示及效果如下:

這次的代碼是按照你完全不會VBA的節奏講解的,講的有點多了,希望編程大咖鍵盤留情。

我知道你們肯定還惦記著開頭演示的那幾張美圖,滿足你,雙手奉上,如果我分享的內容有用的話,一定要關注+轉發啊!!關於Adobe,office系列的使用技巧在這裡都能找到你想要的。(ps:一個月了,這號還沒過新手期....,尷尬炸了。)

以上內容,如果有任何不明白或者執行不了的,留言,必須留言。另外,關於EXCEL WORD PPT VISIO PS AI AE 會聲會影的使用,或者更新 安裝 和諧你有什麼想知道,歡迎評論留言,這裡會盡己所能給你找到答案。

AO skill 專註於分享Adobe office 系列軟體的實用技巧,讓你的辦公更炫更高效,如果對你有幫助,點波關注啦。

Advertisements

你可能會喜歡