ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1503|回复: 0

[求助] 批量插入图片到word表格中.

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-12-13 21:54 | 显示全部楼层 |阅读模式
IN~Z2DN}1KE]2~VU(E{B%5P.png

代码的功能是
功能是.
自动根据输入的列数 CL
和filedialog 选择的图片数量导入如图的格式.
图片 自适应page宽度.


上下两个表格里面是.加上和不加上箭头指示的那句代码的区别.
有大婶知道原因吗...


以下是代码...
  1. Option Explicit

  2. Sub AddPic()
  3. Dim CL, I&, Fn, ST&, RL&, SI
  4. Dim W As Double, WW As Double
  5. If Selection.Information(wdWithInTable) = True Then '在表格中则退出
  6.     MsgBox "请选择非表格区域.", vbCritical + vbOKOnly, "警告..."
  7.     Exit Sub
  8. End If

  9. CL = InputBox("请输入插入图片的列数.", "输入...")
  10. If Not VBA.IsNumeric(CL) Then
  11.     If CL = "" Then Exit Sub
  12.     MsgBox "必须输入数字.", vbCritical + vbOKOnly, "警告..."
  13.     Exit Sub
  14. End If

  15. If Selection.Start = ActiveDocument.Content.End - 1 Then '如光标在文末
  16.     Selection.TypeParagraph '在文末添加一空段
  17. Else
  18.     Selection.EndKey
  19. End If

  20. With ActiveDocument.PageSetup
  21.     W = (.PageWidth - .LeftMargin - .RightMargin) / CL
  22. End With

  23. Application.ScreenUpdating = False
  24. With Application.FileDialog(msoFileDialogFilePicker)    '选择文件
  25.     .InitialView = msoFileDialogViewList
  26.     .Filters.Add "图片文件", "*.jpg,*.png,*.bmp", 1
  27.     .AllowMultiSelect = True
  28.     If .Show = -1 Then
  29.     ST = .SelectedItems.Count
  30.         If ST Mod CL = 0 Then
  31.             RL = (ST \ CL) * 2
  32.         Else
  33.             RL = ((ST \ CL) + 1) * 2
  34.         End If
  35.         Set SI = .SelectedItems
  36.         Dim R&, C&, K&
  37.         With ActiveDocument.Tables.Add(Selection.Range, RL, CL, 1, 1)    '新建表格
  38.             .Borders.Enable = True
  39.                 For Each Fn In SI
  40.                     K = K + 1
  41.                     R = (K - 1) \ CL + 1    '现在行
  42.                     C = (K - 1) Mod CL + 1      '现在列
  43.                     .Cell(R * 2 - 1, C).Select
  44.                     Selection.Delete            '加这么奇葩的语句...暂时处理
  45.                     With Selection.InlineShapes.AddPicture(FileName:=Fn, SaveWithDocument:=True)
  46.                         WW = .Width
  47.                         .Width = W
  48.                         .Height = .Height * (W / WW)
  49.                     End With
  50.                     .Cell(R * 2, C).Select
  51.                     Selection.Text = Basename(Fn)
  52.                 Next Fn
  53.         End With
  54.     End If
  55. End With
  56. Selection.EndKey
  57. Application.ScreenUpdating = True
  58. MsgBox "ok", vbInformation + vbOKOnly, "提示..."
  59. End Sub

  60. Function Basename(FullPath) '取得文件名
  61. Dim x, y
  62. Dim tmpstring
  63. tmpstring = FullPath
  64. x = Len(FullPath)
  65. For y = x To 1 Step -1
  66.     If Mid(FullPath, y, 1) = "" Or _
  67.         Mid(FullPath, y, 1) = ":" Or _
  68.         Mid(FullPath, y, 1) = "/" Then
  69.         tmpstring = Mid(FullPath, y + 1)
  70.         Exit For
  71.     End If
  72. Next
  73. Basename = Left(tmpstring, Len(tmpstring) - 4)
  74. End Function
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 13:36 , Processed in 0.037056 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表