ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] [已解决]杜先生及各位请进:如何选中插入页码后页码所在图文框?

[复制链接]

TA的精华主题

TA的得分主题

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

——因正在折腾公文格式,要求插入页码必须是4号半角宋体一字线,但插入页码域后一选择“外侧”页码跑了,一字线原地不动,所以,必须选中插入页码后页码所在图文框才行,但不知如何才能选中。
——请 杜先生 及各位朋友 指教,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-16 20:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参看了 守柔版主 的一句代码,另辟蹊径,解决了问题,应该是没问题了。页眉页脚这块不如文字好办,达到目的就行了。
***下面是《插入页码-公文一字线》的代码:
  1. Sub test()

  2. '插入页码_公文一字线
  3.     On Error Resume Next
  4.     ActiveDocument.StoryRanges(wdPrimaryFooterStory).Frames(1).Cut

  5. '页码格式设为数字
  6.     With Selection.Sections(1).Headers(1).PageNumbers
  7.         .NumberStyle = wdPageNumberStyleArabic
  8.         .HeadingLevelForChapter = 0
  9.         .IncludeChapterNumber = False
  10.         .ChapterPageSeparator = wdSeparatorHyphen
  11.         .RestartNumberingAtSection = False
  12.         .StartingNumber = 0
  13.     End With

  14. '插入页码(右侧)
  15.     Selection.Sections(1).Footers(1).PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberRight, FirstPage:=True

  16. '编辑页码
  17.     ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Select
  18.     Selection.MoveEnd Unit:=wdCharacter, Count:=-2

  19. '页码前后插入一字线
  20.     Selection.TypeText Text:=Chr(-24159)
  21.     Selection.InsertSymbol Font:="宋体", CharacterNumber:=8212, Unicode:=True
  22.     Selection.TypeText Text:=" "
  23.     Selection.MoveRight Unit:=wdCharacter, Count:=1
  24.     Selection.TypeText Text:=" "
  25.     Selection.InsertSymbol Font:="宋体", CharacterNumber:=8212, Unicode:=True
  26.     Selection.TypeText Text:=Chr(-24159)
  27.     Selection.Paragraphs(1).Range.Select

  28. '宋体、四号
  29.     With Selection.Font
  30.         .NameFarEast = "宋体"
  31.         .NameAscii = "宋体"
  32.         .NameOther = ""
  33.         .Name = ""
  34.         .Size = 14
  35.         .Color = wdColorAutomatic
  36.     End With

  37. '右缩进
  38.     Selection.ParagraphFormat.CharacterUnitRightIndent = 1.5

  39. '关闭窗格、恢复页面视图
  40.     ActiveWindow.ActivePane.Close
  41.     ActiveWindow.View.Type = wdPrintView
  42. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-4-16 22:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2017-4-16 20:47
参看了 守柔版主 的一句代码,另辟蹊径,解决了问题,应该是没问题了。页眉页脚这块不如文字好办,达到目的 ...

Sub test1()
    Dim aSe As Section
    For Each aSe In ActiveDocument.Sections
        aSe.Footers(1).Range.Delete
        aSe.Footers(1).PageNumbers.Add 2, True
        With aSe.Footers(1).Range.Frames(1).Range
            .Collapse 0: .InsertAfter "一"
        End With
        With aSe.Footers(1).Range.Frames(1).Range
            .Collapse: .InsertAfter "一"
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-18 13:40 | 显示全部楼层
——阿弥陀佛!罪过!罪过!
——昨晚才看到 杜先生 回复。杜先生高明!厉害!
——我整合了一下 杜先生 的代码,原来没有页码时会出错,现在不会了,我认为此宏已经成功!
——非常感谢 杜先生!心里的感激无以言表,祝福 杜先生 一切安好!
——别累着,不愿意给我们指导就不必指导,好好休息!
——下面是改良的宏代码:
  1. Sub 插入页码_公文一字线()
  2. 'code by duquancai

  3.     Dim aSe As Section
  4.     For Each aSe In ActiveDocument.Sections
  5.         aSe.Footers(1).Range.Delete
  6.         
  7.         '页码格式设为数字
  8.         With aSe.Footers(1).Range.Sections(1).Headers(1).PageNumbers
  9.             .NumberStyle = wdPageNumberStyleArabic
  10.             .HeadingLevelForChapter = 0
  11.             .IncludeChapterNumber = False
  12.             .ChapterPageSeparator = wdSeparatorHyphen
  13.             .RestartNumberingAtSection = False
  14.             .StartingNumber = 0
  15.         End With
  16.         
  17.         aSe.Footers(1).PageNumbers.Add 2, True '插入页码
  18.         With aSe.Footers(1).Range.Frames(1).Range
  19.             .Select
  20.             
  21.             '页码前后插入一字线
  22.             Selection.TypeText Text:=Chr(-24159)
  23.             Selection.InsertSymbol Font:="宋体", CharacterNumber:=8212, Unicode:=True
  24.             Selection.TypeText Text:=" "
  25.             Selection.MoveRight unit:=wdCharacter, Count:=1
  26.             Selection.TypeText Text:=" "
  27.             Selection.InsertSymbol Font:="宋体", CharacterNumber:=8212, Unicode:=True
  28.             Selection.TypeText Text:=Chr(-24159)
  29.             Selection.Paragraphs(1).Range.Select
  30.         
  31.             '宋体、四号
  32.             With Selection.Font
  33.                 .NameFarEast = "宋体"
  34.                 .NameAscii = "宋体"
  35.                 .NameOther = ""
  36.                 .Name = ""
  37.                 .Size = 14
  38.                 .Color = wdColorAutomatic
  39.                 .Kerning = 0
  40.                 .DisableCharacterSpaceGrid = True
  41.             End With
  42.             With Selection.ParagraphFormat
  43.                 .CharacterUnitRightIndent = 1.5
  44.                 .AutoAdjustRightIndent = False
  45.                 .DisableLineHeightGrid = True
  46.             End With
  47.         End With
  48.     Next

  49. '关闭窗格、恢复页面视图
  50.     ActiveWindow.ActivePane.Close
  51.     ActiveWindow.View.Type = wdPrintView
  52. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-1-13 16:02 | 显示全部楼层
413191246se 发表于 2017-4-18 13:40
——阿弥陀佛!罪过!罪过!
——昨晚才看到 杜先生 回复。杜先生高明!厉害!
——我整合了一下 杜先生  ...

转帖sylun兄的一段代码:

Sub test()
    With ActiveDocument.Sections(1)
        .Footers(wdHeaderFooterPrimary).PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberOutside, FirstPage:=True
        With .Footers(wdHeaderFooterPrimary).Range.Frames(1).Range
            .InsertBefore "— "
            .InsertAfter " —"
            .Font.NameAscii = "宋体"
            .Font.Size = 14
            .ParagraphFormat.RightIndent = 14
            .ParagraphFormat.LeftIndent = 14
        End With
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-14 15:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
经过在多台电脑测试,sylun兄的代码在多节时,如果word没有设置过页码数字格式,效果颇佳;如果页码格式设置过为带短线的数字格式,第一节没有问题,其他节的页码为带短线的数字加上外面的中文长线。在sylun兄的代码前加上:
For Each sec In ActiveDocument.Sections
  sec.Footers(wdHeaderFooterPrimary).PageNumbers.NumberStyle = wdPageNumberStyleArabic
Next sec
就可以完全达到公文的页码要求,完整代码如下:

Sub test()
    For Each sec In ActiveDocument.Sections
        sec.Footers(wdHeaderFooterPrimary).PageNumbers.NumberStyle = wdPageNumberStyleArabic
    Next sec
    With ActiveDocument.Sections(1)
        .Footers(wdHeaderFooterPrimary).PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberOutside, FirstPage:=True
         With .Footers(wdHeaderFooterPrimary).Range.Frames(1).Range
              .InsertBefore "- "
              .InsertAfter " -"
              .Font.NameAscii = "宋体"
              .Font.Size = 14
              .ParagraphFormat.RightIndent = 14
              .ParagraphFormat.LeftIndent = 14
         End With
     End With
End Sub

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 09:41 , Processed in 0.021195 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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