ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

wore 排版问题--vba如何操作样式标题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-22 22:04 | 显示全部楼层
kingtau 发表于 2019-11-22 20:01
经过反复修改,可以达到要求的。
新手发贴和回复需要审核,经常好几个小时审核才能通过。
修改条件注释 ...

不明觉历,特别是计算页数,硬是看不懂。

TA的精华主题

TA的得分主题

发表于 2019-11-23 11:02 | 显示全部楼层
474489459 发表于 2019-11-22 22:04
不明觉历,特别是计算页数,硬是看不懂。

这个计算页数的原理就是用下一个表格所在的页码减去当前表格所在的页码,当循环到最后一下表格的时候没有下一个表格了,只能用文档总页数来减,结果再加1。
这样并不科学,如果正文里除标题下面刚插入的之外,还有其它表格就不灵了,科学的应该是用标题来定位和计算。但是如果作为本文档的专用代码,这样更容易实现,代码更易写易读。

TA的精华主题

TA的得分主题

发表于 2019-11-23 13:24 | 显示全部楼层
总感觉选择和移动部分代码有问题,仔细查阅文档做出改进。
并对关键代码加了注释助于理解(前辈们的注释极大的加快了我的学习进程)。
针对该示例文档,代码1秒执行完成,作为入门月余的新手还是有点小小的成就感,共勉
  1. Sub 插入表格3()
  2. Dim i As Paragraph
  3. Application.ScreenUpdating = False
  4.     For Each i In ActiveDocument.Paragraphs
  5.             If Len(Trim(i.Range)) = 1 Then '
  6.                 i.Range.Delete '删除空段
  7.                 ElseIf i.Range.Bold Then '查找条件可在这里改成其它样式
  8.                 n = n + 1   '生成文件编号
  9.                 i.Range.Select
  10.                 Selection.ParagraphFormat.PageBreakBefore = True '将找到的标题设置段前分页
  11.                 With Selection
  12.                     c = Replace(.Range.Text, Chr(13), "") '获取标题内容以备插入第一个单元格
  13.                     .MoveDown wdParagraph  '移动光标至下一段首
  14.                 Set myTable = ActiveDocument.Tables.Add(.Range, 3, 2) '插入3行2列表格
  15.                         With .Tables(1)
  16.                             .Style = "网格型"
  17.                             .Cell(1, 1).Range.InsertAfter Text:="题目:" & c
  18.                             .Cell(2, 1).Range.InsertAfter Text:="修改日期:年月日"
  19.                             .Cell(3, 1).Range.InsertAfter Text:="生效日期:年月日"
  20.                             .Cell(1, 2).Range.InsertAfter Text:="文件号:阳光医疗集团-" & n
  21.                             .Cell(2, 2).Range.InsertAfter Text:="版本号:"
  22.                             .Cell(3, 2).Range.InsertAfter Text:="页数:"
  23.                             .Select
  24.                             .Range.Font.Name = "仿宋"
  25.                             .Range.Font.Size = 14
  26.                             .Columns.AutoFit '自动列宽
  27.                             .AutoFitBehavior (wdAutoFitWindow) '根据窗口自动调整表格
  28.                         End With
  29.                 .Cells.VerticalAlignment = wdCellAlignVerticalCenter '垂直居中
  30.                 .Collapse wdCollapseEnd '光标移出表格
  31.             End With
  32.      End If
  33. Next
  34. j = ActiveDocument.Tables.Count '
  35.     For k = 1 To j
  36.         With ActiveDocument
  37.             If k = j Then
  38.                 page = .Range.Information(4) - .Tables(k).Range.Information(3) + 1 '最后一个表格的页数由文档总页数减当前页码加1得到
  39.                 .Tables(k).Cell(3, 2).Range.InsertAfter page
  40.                 Exit For
  41.             End If
  42.                 page = .Tables(k + 1).Range.Information(3) - .Tables(k).Range.Information(3) '下一表格所在的页码减当前表格所在的页码得到页数
  43.                 .Tables(k).Cell(3, 2).Range.InsertAfter page
  44.         End With
  45.     Next
  46.     Selection.HomeKey wdStory '过程结束后光标返回文档开头
  47. Application.ScreenUpdating = True
  48. End Sub
复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-24 10:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
kingtau 发表于 2019-11-23 13:24
总感觉选择和移动部分代码有问题,仔细查阅文档做出改进。
并对关键代码加了注释助于理解(前辈们的注释极 ...

如果加入表格之前文档已引入自动目录,代码运行即出现错误,是什么原因呢?

效果--《感染管理科工作制度》.zip

23.19 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2019-11-24 15:35 | 显示全部楼层
474489459 发表于 2019-11-24 10:22
如果加入表格之前文档已引入自动目录,代码运行即出现错误,是什么原因呢?

不是应该先排版后引用目录么?
如果实在就要先目录后排版,那只能是改代码跳过目录域范围,目录域的结构和属性还没学过,再慢慢研究吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-24 16:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kingtau 发表于 2019-11-24 15:35
不是应该先排版后引用目录么?
如果实在就要先目录后排版,那只能是改代码跳过目录域范围,目录域的结构 ...

好的,其实这个也不是什么大问题,只是在工作中总会遇到一些奇怪的现象。有你这样的老师兼同学,真的很高兴,谢谢你1

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-25 22:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kingtau 发表于 2019-11-23 13:24
总感觉选择和移动部分代码有问题,仔细查阅文档做出改进。
并对关键代码加了注释助于理解(前辈们的注释极 ...

请问,为什么在实战中又出错了呢?

2019年11月份院感制度汇总.zip

619.16 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2019-11-26 09:29 | 显示全部楼层
474489459 发表于 2019-11-25 22:51
请问,为什么在实战中又出错了呢?

插入表格部分执行无误,没有问题
页数统计部分出错了,已事先申明这代码的统计方法并不适用于原文档中本来就存在表格的情况;
解决方法就是把插入页码那段注释掉,先插入表格,页数统计再想办法。

再就是感觉你应该理清顺序,一般来说应该先核对文档内容,将所有的文字和表格内容保证无错别字和缺字少段的情况,先整理成一篇无任何格式样式文档,并且没有分页符。内容确定了再全选文档设置字体字号,再手工确定标题并给予样式,再用代码自行执行标题段前分页和插入表格。执行完成后人工校对有无出错的地方,有的原文档内表格有跨页的也需要人工调整。到这步所有工作完成,再看文档格式、规律,决定页码统计方式。页码统计一定是要在最后的,因为很多操作都会造成页数增减。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-26 22:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kingtau 发表于 2019-11-26 09:29
插入表格部分执行无误,没有问题
页数统计部分出错了,已事先申明这代码的统计方法并不适用于原文档中本 ...

好的,谢谢你耐心细致的解释,我的基础不是一般的差。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 00:15 , Processed in 0.024998 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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