ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] WORD文档在第4页后面执行程序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-11 11:15 | 显示全部楼层 |阅读模式
在WORD文档中,通常前面为目录页,如果想在本篇文档中第5页才开始执行排版的VBA代码,如附件,,对第5页后面的所有文档统一改为宋体,字号为小五,段落为1.5位行距呢? 测试1.rar (28.99 KB, 下载次数: 5) ,谢谢

TA的精华主题

TA的得分主题

发表于 2019-7-11 11:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-11 11:59 | 显示全部楼层
Application.ScreenUpdating = False
Dim aDoc As Document
Set aDoc = ActiveDocument
Dim aTable As Table
Dim rng As Range
Set rng = aDoc.Range(aDoc.Range(0, 0).GoTo(wdGoToPage, wdGoToAbsolute, 3).Start, aDoc.Content.End - 1)

后面执行时还是整个文档中的表格执行了

TA的精华主题

TA的得分主题

发表于 2019-7-11 15:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,请先将全文作为一个排版范围,然后,用代码再添加“目录”可不可以呢?

TA的精华主题

TA的得分主题

发表于 2019-7-11 21:39 | 显示全部楼层
可以执行啊:
  1. Sub 从第五页以后开始执行()
  2. Dim aDoc As Document
  3. Dim aTable As Table
  4. Dim rng As Range
  5.     Set aDoc = ActiveDocument
  6.     Set rng = aDoc.Range(aDoc.Range(0, 0).GoTo(wdGoToPage, wdGoToAbsolute, 6).Start, aDoc.Content.End - 1)
  7.     rng.Font.NameFarEast = "宋体"
  8.     rng.Font.Size = 9
  9.     rng.ParagraphFormat.LineSpacingRule = wdLineSpace1pt5
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-12 10:23 | 显示全部楼层

如果文档中存在N多个表格,也要对第5页后面的表格进行规范格式时,执行对齐或表格内的字体的VBA时,所有文档的表格都统一处理了,并没有区分是在第5页后才执行,有没有可以简化不管是文字或表格,只有在第5页后面才执行VBA?

TA的精华主题

TA的得分主题

发表于 2019-7-12 15:27 | 显示全部楼层
  1. Sub test()
  2.     Dim t As Table
  3.     With Selection
  4.         .GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="5"
  5.         .EndKey Unit:=wdStory, Extend:=wdExtend
  6.         .ClearFormatting
  7.         With .Font
  8.             .Kerning = 0
  9.             .DisableCharacterSpaceGrid = True
  10.         End With
  11.         With .ParagraphFormat
  12.             .Space15
  13.             .AutoAdjustRightIndent = False
  14.             .DisableLineHeightGrid = True
  15.         End With
  16.         For Each t In .Tables
  17.             With t.Range.Rows
  18.                 .WrapAroundText = False
  19.                 .Alignment = wdAlignRowCenter
  20.                 .Parent.Font.Color = wdColorRed
  21.             End With
  22.         Next
  23.     End With
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

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

我按上面的语句修改,页数执行始终不对,下面是我原的语句,请指教一下
Sub test()
   Dim MyTable As Table
Dim t As Table, n As Long, c As Cell
For Each wTab In ActiveDocument.Tables
    If Selection.Information(wdWithInTable) = True Then i = 1
    For Each t In ActiveDocument.Tables
Application.ScreenUpdating = False
For Each MyTable In ActiveDocument.Tables
MyTable.PreferredWidthType = wdPreferredWidthPercent
MyTable.PreferredWidth = 100
Next
Application.ScreenUpdating = True
For Each wCel In wTab.Range.Cells
      If Len(wCel.Range) > 2 Then
        If Len(wCel.Range) > 2 And IsNumeric(Left(wCel.Range, Len(wCel.Range) - 2)) Then
          wCel.Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        Else
        With t.Rows
             .WrapAroundText = False
             .Alignment = wdAlignRowLeft
             .HeightRule = wdRowHeightAtLeast
             .Height = CentimetersToPoints(0.6)
             End With
             With t.Range
             .Font.Name = "宋体"
             .Font.Name = "宋体"
             .Font.Size = 10
             End With
          For Each c In t.Range.Cells
            If c.Range Like "合计*" Then
                With c.Range
                   ' With .Font
                .ParagraphFormat.Alignment = wdAlignParagraphCenter
                End With
           End If
        Next
  End If
End If
Next
Next
Next
End Sub

TA的精华主题

TA的得分主题

发表于 2019-7-16 21:40 | 显示全部楼层
    楼主,你这句代码 For Each wTab In ActiveDocument.Tables 是处理全文表格,如果表格在第 1-4 页,这不是你的要结果。
    我的代码选定从第 5 页到文尾所有文字内容,这部分内容为 Selection,你要对这个 Selection(选定内容)处理,请将两处 ActiveDocument.Tables 写成 For Each wTab In Selection.Tables 才行(有时可以将 Selection 设为 Range 也行)。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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