ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 批量替换word中指定的页面

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-14 20:41 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 xipick 于 2011-12-14 20:45 编辑

现在我想实现这个目的,有若干个word文档,现在要把这些文档中的3到7页全部替换成另外一文档中的3-7页,在论坛里面找了两天代码,终于被我拼凑出下面的这个样子,经过在2007中运行,发现能够实现,可是在office2003及wps中怎么也运行不起来。现把代码贴出来,求版主帮忙改进一下啊。多谢了。

  1. Sub 批量替换word中的某几页()

  2. '以下是批量操作前的准备工作,也就是把要粘贴的东西复制到剪切板

  3. Dialogs(wdDialogFileOpen).Show '选择用来替换的内容所在的文件
  4.             
  5.          
  6. '以下是指定用来替换的内容所在的页面,然后复制

  7.     Dim P1 As String, P2 As String, PS() As String, PageHome As Integer, PageEnd As Integer, EndPage As Long

  8.     On Error Resume Next

  9.     P1 = InputBox(prompt:="请在此输入连续页的首页-尾页,以-为分隔符!如“4-4”", Title:="请输入用来替换的内容所在的页面")

  10.     If P1 = "" Then Exit Sub

  11.     PS = Split(P1, "-") '返回一个以"-"分隔的一维数组

  12.     If UBound(PS) > 1 Then Exit Sub '如果上标大于1,则退出(用户连续型输入如1-2-7")

  13.     PageHome = PS(0) '首页为数组下标

  14.     PageEnd = PS(1) '尾页为数组上标

  15.     If PageHome > PageEnd Then Exit Sub '尾页大于首页则退出

  16.     If PageHome < 1 Then Exit Sub '首页小于1则退出

  17.     With ActiveDocument

  18.         'EndPage为尾页位置,如果大于文档总页数,则为文档最后位置;反之则下一页的起始位置

  19.         EndPage = VBA.IIf(PageEnd >= .GoTo(wdGoToPage, wdGoToNext, , PageEnd).Information(wdNumberOfPagesInDocument), .Content.End, .GoTo(wdGoToPage, wdGoToNext, , PageEnd + 1).Start)

  20.         '选定指定区域

  21.         .Range(.GoTo(wdGoToPage, wdGoToNext, , PageHome).Start, EndPage).Select

  22.     End With

  23.     Selection.Copy
  24.    
  25. '以是选择用来替换的内容所在的文件,然后复制用来替换的内容

  26.     ActiveDocument.Close
  27.       
  28.     P2 = InputBox(prompt:="请在此输入连续页的首页-尾页,以-为分隔符!如“4-4”", Title:="请输入所要替换的页面")

  29. '以下是重复执行代码

  30. Dim MyDialog As FileDialog, GetStr(1 To 1000) As String    '1000是工作时最多的文档数,可以修改
  31. On Error Resume Next
  32. Set MyDialog = Application.FileDialog(msoFileDialogFilePicker)
  33. With MyDialog
  34.     .Filters.Clear
  35.     .Filters.Add "所有WORD文件", "*.doc", 1
  36.     .AllowMultiSelect = True '允许多项选择
  37.     i = 1
  38.     If .Show = -1 Then
  39.         For Each stiSelectedItem In .SelectedItems
  40.             GetStr(i) = stiSelectedItem
  41.             i = i + 1
  42.         Next
  43.         i = i - 1
  44.     End If
  45.    
  46.     Application.ScreenUpdating = False
  47.     For j = 1 To i Step 1
  48.         Set Doc = Documents.Open(FileName:=GetStr(j), Visible:=True)
  49.         Windows(GetStr(j)).Activate

  50.         
  51.    '以下是在单个文件中运行的宏
  52.         
  53.    
  54.     If P2 = "" Then Exit Sub

  55.     PS = Split(P2, "-") '返回一个以"-"分隔的一维数组

  56.     If UBound(PS) > 1 Then Exit Sub '如果上标大于1,则退出(用户连续型输入如1-2-7")

  57.     PageHome = PS(0) '首页为数组下标

  58.     PageEnd = PS(1) '尾页为数组上标

  59.     If PageHome > PageEnd Then Exit Sub '尾页大于首页则退出

  60.     If PageHome < 1 Then Exit Sub '首页小于1则退出

  61.     With ActiveDocument

  62.         'EndPage为尾页位置,如果大于文档总页数,则为文档最后位置;反之则下一页的起始位置

  63.         EndPage = VBA.IIf(PageEnd >= .GoTo(wdGoToPage, wdGoToNext, , PageEnd).Information(wdNumberOfPagesInDocument), .Content.End, .GoTo(wdGoToPage, wdGoToNext, , PageEnd + 1).Start)

  64.         '选定指定区域

  65.         .Range(.GoTo(wdGoToPage, wdGoToNext, , PageHome).Start, EndPage).Select

  66.     End With

  67. Selection.PasteAndFormat (wdPasteDefault)

  68.    
  69.     '以上是在单个文件中运行的宏
  70.    
  71. Selection.Find.Execute Replace:=wdReplaceAll

  72. Application.Run macroname:="NEWMACROS"
  73.         ActiveDocument.Save
  74.         ActiveWindow.Close
  75.     Next
  76.     Application.ScreenUpdating = True
  77. End With
  78.     MsgBox "修改完毕!请查看!!", vbInformation
  79.     End Sub
复制代码
运行该宏后,第一步选择用来替换的页面所在的文件,第二步填写用来替换的页面的位置,第三步填写所要替换的页面的位置,第四步选择要批量替换的文件。

或者直接下载下面的附件

批量替换word指定的页面.rar (15.62 KB, 下载次数: 112)

TA的精华主题

TA的得分主题

发表于 2011-12-14 21:01 | 显示全部楼层
帮顶~~~~~~~~~

TA的精华主题

TA的得分主题

发表于 2011-12-14 22:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-1-5 15:35 | 显示全部楼层
这个东西非常好呀,刚好我们单位要批量更换首页,谢谢了!

TA的精华主题

TA的得分主题

发表于 2012-10-17 16:00 | 显示全部楼层
太好了,正要批量替换首页》》》....雪中送炭啊...谢谢啦。。。

TA的精华主题

TA的得分主题

发表于 2012-10-18 21:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-9-16 19:45 | 显示全部楼层
关于这个事  我也是写了2个小时代码 ,发现 这有个现成的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 21:32 , Processed in 0.026611 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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