ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]如何用WORD VBA批量自动排版?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-5-30 18:16 | 显示全部楼层 |阅读模式

我手头有很多由其他排版软件转换来的公文文本文件,这些文件格式基本一样,第一行是文件标题,第二行是文号,第三行开始是文件正文,见附件“文本文件.txt”,现在我想把它们批量转换成WORD版的公文文件,有红色字体和红线的函头,如附件“公文版式.DOC”,原本想利用录制宏的方式,但在录制宏时没办法使用鼠标,就画不了横线,而且设置字体也不好设置,相当郁闷![em06]请高手帮忙看看这个VBA程序要怎么写,不胜感激!


TA的精华主题

TA的得分主题

 楼主| 发表于 2007-5-30 19:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主们有没有看看到俺这个求助的呢?

TA的精华主题

TA的得分主题

发表于 2007-5-30 19:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

用MS-WORD灵感百宝箱吧,其中的智能格式功能是否可以解决!

http://down.banma.com/xingyeguanli/bangongruanjian/msword_ling_gan_bai_bao_xiang_114802.shtml

[此贴子已经被作者于2007-5-30 20:26:01编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-5-30 20:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-6-2 11:12 | 显示全部楼层

'请参考:

Sub newFile()
   Dim myPath As String, myShape As Shape, myRange As Range
   Dim txt_Doc As Document, txt_Path
   With Application.FileDialog(msoFileDialogFilePicker)
      .Title = "请选择被处理的txt文件"
      .AllowMultiSelect = True
      .Filters.Clear
      .Filters.Add "文本文件", "*.txt"
      If .Show = -1 Then
         For Each txt_Path In .SelectedItems
             Set txt_Doc = Documents.Open(FileName:=txt_Path)
             With txt_Doc.Paragraphs(1).Range.Font
                 .Name = "黑体"
                 .Size = 36
                 .Color = wdColorRed
                 .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
             End With
             txt_Doc.Paragraphs(2).Range.Delete          '删除文本文件中的空白第二段
             With txt_Doc.Paragraphs(2).Range.Font  '删除空白段后,第3段变为第2段
                 .Name = "仿宋_GB2312"
                 .Size = 15
                 .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
             End With
             txt_Doc.Paragraphs(3).Range.InsertAfter Chr(13)  '第三段后加一个空段
             Set myShape = txt_Doc.Shapes.AddLine(0, 10, 420, 10, txt_Doc.Paragraphs(3).Range)
             With myShape
                .Line.Weight = 3#
                .Line.DashStyle = msoLineSolid
                .Line.Style = msoLineSingle
                .Line.Transparency = 0#
                .Line.Visible = msoTrue
                .Line.ForeColor.RGB = RGB(255, 0, 0)
                .Line.BackColor.RGB = RGB(255, 255, 255)
                .Line.BeginArrowheadLength = msoArrowheadLengthMedium
                .Line.BeginArrowheadWidth = msoArrowheadWidthMedium
                .Line.BeginArrowheadStyle = msoArrowheadNone
                .Line.EndArrowheadLength = msoArrowheadLengthMedium
                .Line.EndArrowheadWidth = msoArrowheadWidthMedium
                .Line.EndArrowheadStyle = msoArrowheadNone
             End With
             Set myRange = txt_Doc.Range(txt_Doc.Paragraphs(3).Range.Start, txt_Doc.Content.End)
             With myRange
                 .Font.Name = "仿宋_GB2312"
                 .Font.Size = 16
                 .ParagraphFormat.CharacterUnitFirstLineIndent = 2
             End With
             txt_Doc.Sections(1).Headers(1).Range.Style = "正文"     '除页眉横线
             txt_Doc.Sections(1).Footers(1).PageNumbers.Add PageNumberAlignment:= _
                       wdAlignPageNumberCenter, FirstPage:=True
             On Error Resume Next
             MkDir txt_Doc.Path & "\New"
             txt_Doc.SaveAs txt_Doc.Path & "\New\" & Left(txt_Doc.Name, Len(txt_Doc.Name) - 3) & "doc", wdFormatDocument
             txt_Doc.Close
         Next
      Else
        Exit Sub
      End If
   End With

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-12 17:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢chylhr兄,最近工作忙了些日子,今天才上来看到有老大的回复了

等俺试后再回复情况了

[em05]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-13 19:26 | 显示全部楼层

遇上新问题了

首先要谢谢chylhr,已经解决一部份的问题了,但现在有一个新问题请教,我在打开TXT文件后,想先插入两行字(函头),并根据要求设置不同的字体,我这么写但得不到正确的结果,能否请您再指导一下?

             Set txt_Doc = Documents.Open(FileName:=txt_Path)


             Selection.TypeText Text:="关 于 X X 问 题 的"
             With Selection.Font
                 .Name = "黑体"
                 .Size = 28
                 .Color = wdColorRed
                 .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
             End With


             Selection.TypeText Text:="会 议 纪 要"
             With Selection.Font
                 .Name = "宋体"
                 .Size = 32
                 .Color = wdColorRed
                 .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
             End With

好象有看到帮助里说,一个文档只能有一个selection,会不会是这个原因引起的?有什么办法可以实现在打开的TXT文件前插入这个函头吗?期待高手解答!

[em06] c3Jv7H05.rar (2.18 KB, 下载次数: 185)
[此贴子已经被作者于2007-6-13 19:46:50编辑过]

TA的精华主题

TA的得分主题

发表于 2007-6-14 19:09 | 显示全部楼层

'将以下代码放在5楼代码的On Error Resume Next前面即可

Set myRange = txt_Doc.Range(0, 0)
myRange.InsertBefore ("会 议 纪 要" & Chr(13))
With myRange.Font
    .Name = "黑体"
    .Size = 28
    .Color = wdColorRed
    .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Set myRange = txt_Doc.Range(0, 0)
myRange.InsertBefore ("关 于 X X 问 题 的" & Chr(13))
With myRange.Font
    .Name = "宋体"
    .Size = 32
    .Color = wdColorRed
    .Parent.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

TA的精华主题

TA的得分主题

发表于 2007-6-14 20:48 | 显示全部楼层
请教chylhr:
你写的代码能否转换为VBS的代码???
特别是 
.Line.ForeColor.RGB = RGB(255, 0, 0)     和    .Line.BackColor.RGB = RGB(255, 255, 255) 如何转换!

TA的精华主题

TA的得分主题

发表于 2007-6-15 06:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
注意,红线只需设置段落边框线即可!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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