ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] WORD 怎么批量插入照片并在照片底部命名?

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-23 16:24 | 显示全部楼层 |阅读模式
在一个文件件内有一百多张照片,我想批量插入WORD并且使得WORD中的照片下方有文字说明(说明内容是对应的照片的文件名),我已经设置好了WORD的页面正好每页能装2张照片(含文字说明),全选照片拖入WORD后能实现批量插入,但需要单个在底部写,请教大家有没有把照片批量插入并用照片的文件名作为WORD中照片底部文字说明的办法?

TA的精华主题

TA的得分主题

发表于 2011-10-23 20:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-10-23 22:23 | 显示全部楼层
本帖最后由 szqhb 于 2011-10-23 23:56 编辑

关注,严重关注!

就用2楼的方法吧
参考http://club.excelhome.net/forum.php?mod=viewthread&tid=166226
http://www.tudou.com/programs/view/DH9DoaMIHrc/
http://313663400.qzone.qq.com/

TA的精华主题

TA的得分主题

发表于 2011-10-24 02:26 | 显示全部楼层
本帖最后由 白月清风 于 2011-10-24 02:29 编辑

Sub 插入图片()
Dim myfile As FileDialog
    Set myfile = Application.FileDialog(msoFileDialogFilePicker)
    With myfile
         .InitialFileName = "C:\"
            If .Show = -1 Then
            For Each fn In .SelectedItems
            
          Set mypic = Selection.InlineShapes.AddPicture(FileName:=fn, SaveWithDocument:=True)
           mypic.Width = 400 '根据需要设置
           mypic.Height = 300
             If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
                Selection.TypeParagraph '在文末添加一空段
                Else
                Selection.MoveDown
             End If
              Selection.Text = Basename(fn) '函数取得文件名
              Selection.EndKey
              
              If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
                Selection.TypeParagraph '在文末添加一空段
                Else
                Selection.MoveDown
               End If
            Next fn
            Else
           End If
    End With
    Set myfile = Nothing
End Sub

Function Basename(FullPath) '取得文件名
Dim x, y
Dim tmpstring
tmpstring = FullPath
x = Len(FullPath)
For y = x To 1 Step -1
If Mid(FullPath, y, 1) = "\" Or _
Mid(FullPath, y, 1) = ":" Or _
Mid(FullPath, y, 1) = "/" Then
tmpstring = Mid(FullPath, y + 1)
Exit For
End If
Next
Basename = Left(tmpstring, Len(tmpstring) - 4)
End Function

以上代码打开文件夹,选择一个或多个图片插入,插入100多张图片比较慢,基本可以实现楼主想法,最好是在空白word文件中测试
函数取得文件名代码是网上找的,稍加改动

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-10-24 08:24 | 显示全部楼层
以上代码可用,且速度很快(我的是新配置的电脑),收藏了,谢谢白月清风。
关于相片的大小,代码中用的是什么单位,可否用厘米?

另外,可否让相片保持比例?
(比如,大家交上来的相片大小不一,强制大小好多相片都变形了,我只让其宽度保持3厘米,高则按比例缩放)

TA的精华主题

TA的得分主题

发表于 2011-10-24 09:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
经测试   

        mypic.Width = 400 '根据需要设置
        mypic.Height = 300
替换成下面代码即可按比例调整
         '按比例调整相片尺寸
           WidthNum = mypic.Width
           c = 3         '在此处修改相片宽,单位厘米
           mypic.Width = c * 28.35
           mypic.Height = (c * 28.35 / WidthNum) * mypic.Height

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-24 18:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢白月清风,我试了,用你写的宏20秒左右插图125张照片,20秒完成了我20多分钟才能完成的事情,谢谢。

TA的精华主题

TA的得分主题

发表于 2012-1-4 17:53 | 显示全部楼层
本帖最后由 secowu 于 2012-1-4 17:53 编辑

代码不错,非常方便哦,




  1. Sub InsertPic()
  2.     Dim myfile As FileDialog
  3.     Set myfile = Application.FileDialog(msoFileDialogFilePicker)
  4.     With myfile
  5.         .InitialFileName = "F:"
  6.         If .Show = -1 Then
  7.             For Each fn In .SelectedItems

  8.                 Set mypic = Selection.InlineShapes.AddPicture(FileName:=fn, SaveWithDocument:=True)
  9.                 '按比例调整相片尺寸
  10.                 WidthNum = mypic.Width
  11.                 c = 10         '在此处修改相片宽,单位厘米
  12.                 mypic.Width = c * 28.35
  13.                 mypic.Height = (c * 28.35 / WidthNum) * mypic.Height
  14.                 If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
  15.                     Selection.TypeParagraph    '在文末添加一空段
  16.                 Else
  17.                     Selection.MoveDown
  18.                 End If
  19.                 Selection.Text = Basename(fn)    '函数取得文件名
  20.                 Selection.EndKey

  21.                 If Selection.Start = ActiveDocument.Content.End - 1 Then  '如光标在文末
  22.                     Selection.TypeParagraph    '在文末添加一空段
  23.                 Else
  24.                     Selection.MoveDown
  25.                 End If
  26.             Next fn
  27.         Else
  28.         End If
  29.     End With
  30.     Set myfile = Nothing
  31. End Sub

  32. Function Basename(FullPath)    '取得文件名
  33.     Dim x, y
  34.     Dim tmpstring
  35.     tmpstring = FullPath
  36.     x = Len(FullPath)
  37.     For y = x To 1 Step -1
  38.         If Mid(FullPath, y, 1) = "" Or _
  39.            Mid(FullPath, y, 1) = ":" Or _
  40.            Mid(FullPath, y, 1) = "/" Then
  41.             tmpstring = Mid(FullPath, y + 1)
  42.             Exit For
  43.         End If
  44.     Next
  45.     Basename = Left(tmpstring, Len(tmpstring) - 4)
  46. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-1-5 21:23 | 显示全部楼层
可能用得到的,先标记一下,以备后用

TA的精华主题

TA的得分主题

发表于 2012-4-13 01:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 23:21 , Processed in 0.043834 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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