成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Excel插入批量圖片,套用這些代碼就OK

大數據
咱們今天分享的內容是按指定名稱和位置批量將圖片插入到Excel工作表中……

以下文章來源于VBA編程學習與實踐 ,作者EH看見星光

咱們今天分享的內容是按指定名稱和位置批量將圖片插入到Excel工作表中……

看個動畫先:

 

Excel插入批量圖片,套用這些代碼就OK

代碼如下

  1. Sub InsertPic() 
  2.     'ExcelHome VBA編程學習與實踐 by:看見星光 
  3.     Dim Arr, i&, k&, n&, pd& 
  4.     Dim strPicName$, strPicPath$, strFdPath$, shp As Shape 
  5.     Dim Rng As Range, Cll As Range, Rg As Range, strWhere As String 
  6.     'On Error Resume Next 
  7.     '用戶選擇圖片所在的文件夾 
  8.     With Application.FileDialog(msoFileDialogFolderPicker) 
  9.        If .Show Then strFdPath = .SelectedItems(1) Else: Exit Sub 
  10.     End With 
  11.     If Right(strFdPath, 1) <> "\" Then strFdPath = strFdPath & "\" 
  12.     Set Rng = Application.InputBox("請選擇圖片名稱所在的單元格區域", Type:=8) 
  13.     '用戶選擇需要插入圖片的名稱所在單元格范圍 
  14.     Set Rng = Intersect(Rng.Parent.UsedRange, Rng) 
  15.     'intersect語句避免用戶選擇整列單元格,造成無謂運算的情況 
  16.     If Rng Is Nothing Then MsgBox "選擇的單元格范圍不存在數據!": Exit Sub 
  17.     strWhere = InputBox("請輸入圖片偏移的位置,例如上1、下1、左1、右1", , "右1"
  18.     '用戶輸入圖片相對單元格的偏移位置。 
  19.     If Len(strWhere) = 0 Then Exit Sub 
  20.     x = Left(strWhere, 1) 
  21.     '偏移的方向 
  22.     If InStr("上下左右", x) = 0 Then MsgBox "你未輸入偏移方位。": Exit Sub 
  23.     y = Val(Mid(strWhere, 2)) 
  24.     '偏移的值 
  25.     Select Case x 
  26.         Case "上" 
  27.         Set Rg = Rng.Offset(-y, 0) 
  28.         Case "下" 
  29.         Set Rg = Rng.Offset(y, 0) 
  30.         Case "左" 
  31.         Set Rg = Rng.Offset(0, -y) 
  32.         Case "右" 
  33.         Set Rg = Rng.Offset(0, y) 
  34.     End Select 
  35.     Application.ScreenUpdating = False 
  36.     Rng.Parent.Select 
  37.     For Each shp In ActiveSheet.Shapes 
  38.     '如果舊圖片存放在目標圖片存放范圍則刪除 
  39.         If Not Intersect(Rg, shp.TopLeftCell) Is Nothing Then shp.Delete 
  40.     Next 
  41.     x = Rg.Row - Rng.Row 
  42.     y = Rg.Column - Rng.Column 
  43.     '偏移的坐標 
  44.     Arr = Array(".jpg"".jpeg"".bmp"".png"".gif"
  45.     '用數組變量記錄五種文件格式 
  46.     For Each Cll In Rng 
  47.     '遍歷選擇區域的每一個單元格 
  48.         strPicName = Cll.Text 
  49.         '圖片名稱 
  50.         If Len(strPicName) Then 
  51.         '如果單元格存在值 
  52.             strPicPath = strFdPath & strPicName 
  53.             '圖片路徑 
  54.             pd = 0 
  55.             'pd變量標記是否找到相關圖片 
  56.             For i = 0 To UBound(Arr) 
  57.             '由于不確定用戶的圖片格式,因此遍歷圖片格式 
  58.                 If Len(Dir(strPicPath & Arr(i))) Then 
  59.                 '如果存在相關文件 
  60.                     Set shp = ActiveSheet.Shapes.AddPicture( _ 
  61.                         strPicPath & Arr(i), FalseTrue, _ 
  62.                         Cll.Offset(x, y).Left + 5, _ 
  63.                         Cll.Offset(x, y).Top + 5, _ 
  64.                         20, 20) 
  65.                     shp.Select 
  66.                     With Selection 
  67.                         .ShapeRange.LockAspectRatio = msoFalse 
  68.                         '撤銷鎖定圖片縱橫比 
  69.                         .Height = Cll.Offset(x, y).Height - 10 '圖片高度 
  70.                         .Width = Cll.Offset(x, y).Width - 10 '圖片寬度 
  71.                     End With 
  72.                     pd = 1 '標記找到結果 
  73.                     n = n + 1 '累加找到結果的個數 
  74.                     [a1].Select: Exit For '找到結果后就可以退出文件格式循環 
  75.                 End If 
  76.             Next 
  77.             If pd = 0 Then k = k + 1 '如果沒找到圖片累加個數 
  78.         End If 
  79.     Next 
  80.     Application.ScreenUpdating = True 
  81.     MsgBox "共處理成功" & n & "個圖片,另有" & k & "個非空單元格未找到對應的圖片。" 
  82. End Sub 

 

Excel插入批量圖片,套用這些代碼就OK

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

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

 

Excel插入批量圖片,套用這些代碼就OK

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

 

Excel插入批量圖片,套用這些代碼就OK

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

 

Excel插入批量圖片,套用這些代碼就OK

小貼士:

  1. 該段小代碼支持一下圖片格式:".jpg", ".jpeg", ".bmp", ".png", ".gif"
  2. 圖片的縱橫比是未鎖定的,如需鎖定,可以注釋掉下句代碼:.ShapeRange.LockAspectRatio = msoFalse
  3. 圖片的行高和列寬是由放置圖片的單元格行高和列寬決定的。當然,您也可以把代碼稍微修改,設置固定的圖片行高和列寬,并由圖片的行高和列寬決定單元格的大小。
  4. 圖片的名稱必須和指定單元格范圍內的名稱一致,如果需要模糊匹配,使用DIR函數搭配通配符的方式即可。
  5. 代碼采用非引用的方式插入圖片,該方式會圖片作為excel的資源打包到excel文件中,即便數據源的圖片已被刪除,表格中的圖片也依然存在。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2012-06-27 11:31:24

2022-09-21 14:17:58

Umi-OCR軟件

2010-09-03 11:47:38

SQL刪除

2013-04-01 15:03:58

Android開發Android批量插入

2010-09-01 16:26:11

SQL刪除批量

2020-09-23 09:21:56

CPUCache緩存

2019-07-24 16:00:37

Python代碼高清圖片

2013-07-04 10:50:33

騰訊移動互聯網大數據

2021-04-08 10:55:53

MySQL數據庫代碼

2020-11-23 10:50:27

MySQLSQL數據庫

2013-09-22 10:25:23

MySQLSQL性能優化

2021-02-01 00:04:13

Dictionary數據批量

2024-10-22 08:47:03

2021-09-27 07:56:41

MyBatis Plu數據庫批量插入

2017-03-31 15:55:19

機箱板材裝機

2015-10-10 10:10:20

2009-08-12 16:39:50

C#向Excel插入數

2022-09-29 10:06:56

SQLMySQL服務端

2011-08-04 18:00:47

SQLite數據庫批量數據

2021-12-27 11:30:51

數據結構算法動態規劃
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区 | 伊人99 | 国产一二区视频 | 第四色影音先锋 | 国产成人小视频 | 亚洲成人一区二区 | 欧美日韩中文字幕 | 国产成人99久久亚洲综合精品 | 911网站大全在线观看 | 久久精品欧美视频 | 九九热九九 | 国产精品视频一区二区三区不卡 | 色影视| 成人国产一区二区三区精品麻豆 | 天天操天天干天天透 | 综合久| 日韩欧美在线不卡 | 一区二区三区精品视频 | 日本高清视频在线播放 | 伊人久久精品 | www久久久 | 欧美综合在线观看 | 日本三级在线 | 一区二区三区国产视频 | 亚洲一区二区中文字幕在线观看 | 久综合| 日批日韩在线观看 | 久操福利 | 日韩精品视频在线 | 亚洲一区三区在线观看 | 日日干夜夜干 | 亚洲综合一区二区三区 | 欧州一区二区三区 | 范冰冰一级做a爰片久久毛片 | 欧美精品一区二区蜜桃 | 国产精品色av | 香蕉久久久久久 | 成人精品影院 | 99精品视频在线 | 精品在线观看一区二区 | 欧美日韩视频在线 |