ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Word > 如何用vba代码对word文档进行格式转换?(实例)

如何用vba代码对word文档进行格式转换?(实例)

作者:绿色风 分类: 时间:2022-08-18 浏览:86
楼主
kevinchengcw
Q: 如何用vba代码对word文档进行格式转换?(实例)
A: 代码如下:
  1. Type mTable '定义自定义类型用于存储相关信息
  2. Title As String
  3. No As String
  4. Ver As String
  5. Date As String
  6. Page As String
  7. Content As String
  8. End Type
  9. Sub test()
  10. Dim FN$, DOC As Document, Source As mTable, RegEx As Object
  11. Set RegEx = CreateObject("vbscript.regexp") '创建正则项目,用于替换掉多余的结尾,word表格里取出的不知为何有个多余的尾巴
  12. With RegEx
  13.     .Global = True  '全局有效
  14.     .MultiLine = True   '多行有效
  15.     .Pattern = "\s*\s*"    '匹配空白字符与圆点构成的字符串
  16. End With
  17. If Dir(ThisDocument.Path & "\new\", vbDirectory) = "" Then MkDir ThisDocument.Path & "\new\"    '查询是否有存储文件夹,没有就建一个
  18. FN = Dir(ThisDocument.Path & "\*.doc?") '枚举当前目录下的文档
  19. Do While FN <> ""
  20.     If FN <> ThisDocument.Name And FN <> "模板.doc" Then    '如果不是本文件或模板文件,则进行处理
  21.         With Source '初始化一下,防止处理不同文件时信息混淆
  22.             .Title = ""
  23.             .No = ""
  24.             .Ver = ""
  25.             .Date = ""
  26.             .Page = ""
  27.             .Content = ""
  28.         End With
  29.         Set DOC = GetObject(ThisDocument.Path & "\" & FN)   '隐藏打开当前循环到的文档
  30.         With DOC.Tables(1)  '采集第一个表格里的内容存入对应数据项中
  31.             Source.Title = RegEx.Replace(.Cell(1, 2).Range.Text, "")
  32.             Source.No = RegEx.Replace(.Cell(2, 2).Range.Text, "")
  33.             Source.Ver = RegEx.Replace(.Cell(2, 4).Range.Text, "")
  34.             Source.Date = RegEx.Replace(.Cell(2, 6).Range.Text, "")
  35.             Source.Page = RegEx.Replace(.Cell(2, 7).Range.Text, "")
  36.             Source.Content = RegEx.Replace(.Cell(3, 1).Range.Text, "")
  37.         End With
  38.         DOC.Close False '关闭文档
  39.         CreateObject("wscript.shell").Run Environ("comspec") & " /c copy """ & ThisDocument.Path & "\模板.doc"" """ & ThisDocument.Path & "\new\" & FN & """ /y", 0, 1  '复制一份模板到new目录下并命名为与当前循环到的文档同名
  40.         Set DOC = Documents.Open(ThisDocument.Path & "\new\" & FN)  '打开新建的文档
  41.         With DOC
  42.             .Activate    '激活
  43.             ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader '打开页眉视图
  44.             With Selection.Tables(1)    '将对应内容放入页眉的表中
  45.                 .Cell(1, 2).Range.Text = Source.Title
  46.                 .Cell(1, 4).Range.Text = Source.No
  47.                 .Cell(2, 3).Range.Text = Source.Date
  48.                 .Cell(2, 5).Range.Text = Source.Ver
  49.                 .Cell(2, 7).Range.Text = Source.Page
  50.             End With
  51.             ActiveWindow.ActivePane.View.Type = wdNormalView    '到普通视图,将正文写入
  52.             .Range.Text = Source.Content
  53.         End With
  54.         DOC.Close True  '保存并关闭文档
  55.     End If
  56.     FN = Dir    '循环到下一个
  57. Loop
  58. Set DOC = Nothing   '清空创建的项目
  59. Set RegEx = Nothing
  60. End Sub

详细内容请参见源帖。
http://www.exceltip.net/thread-17232-1-1.html
2楼
windimi007
K哥V5,学习了~~~~~~~

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap