自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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("請選擇圖片名稱所在的單元格區(qū)域", 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.     '遍歷選擇區(qū)域的每一個單元格 
  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 '找到結果后就可以退出文件格式循環(huán) 
  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

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

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

 

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

然后,選擇圖片名稱存放的單元格區(qū)域,可以選擇整列、多列、整行或多行,比如示例動畫中的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開發(fā)Android批量插入

2010-09-01 16:26:11

SQL刪除批量

2021-04-08 10:55:53

MySQL數據庫代碼

2019-07-24 16:00:37

Python代碼高清圖片

2020-09-23 09:21:56

CPUCache緩存

2013-09-22 10:25:23

MySQLSQL性能優(yōu)化

2013-07-04 10:50:33

騰訊移動互聯網大數據

2020-11-23 10:50:27

MySQLSQL數據庫

2021-09-27 07:56:41

MyBatis Plu數據庫批量插入

2021-02-01 00:04:13

Dictionary數據批量

2024-10-22 08:47:03

2009-08-12 16:39:50

C#向Excel插入數

2011-08-04 18:00:47

SQLite數據庫批量數據

2022-09-29 10:06:56

SQLMySQL服務端

2015-10-10 10:10:20

2015-04-17 10:31:11

PHP下載美女圖片實現代碼

2017-03-31 15:55:19

機箱板材裝機
點贊
收藏

51CTO技術棧公眾號