ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 排版时候统一设置表格格式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-9-27 11:56 | 显示全部楼层 |阅读模式
各位老师 潜水几个月 受益匪浅
现在排版遇到一个问题 总结如下
1、统一所有表格宽度 如16.25厘米或者100%比例
2、表格第一行标题自动居中
3、默认单元格边距 左 0.05厘米 右0.05厘米或者全部是0也可以(即选中表格——右键——表格属性——表格选项中的默认单元格边距设置)
以上三个问题 能不能用VBA语法统一解决 效果图如下

盼请各位老师解答 不胜感激!

TA的精华主题

TA的得分主题

发表于 2019-9-27 21:03 | 显示全部楼层
本帖最后由 413191246se 于 2019-9-28 00:00 编辑

楼主,你好!
* 第 2 个问题:表格第一行不叫标题,叫表头,它可以居中,也可以不居中。
* 第 3 个问题:表格默认单元格边距如果不是默认,会有麻烦,就是失去基准,不规范,不建议这么做(与第 1 个问题有抵触)。
* 建议提供附件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-30 17:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2019-9-27 21:03
楼主,你好!
* 第 2 个问题:表格第一行不叫标题,叫表头,它可以居中,也可以不居中。
* 第 3 个问题: ...

多谢老师耐心解答、相关的附件附上去、如图就是每个表的最终结果即数字瘦体 靠右居中对齐 汉字靠左居中对齐 表头居中对齐 所有文字 汉字宋体 数字瘦体 都为五号字体 这个是表格的相关要求
我一般做审计报告的排版工作 表很多 每次都要一个个的重新调整表格的文字 数字格式以及表头问题  多了就觉得赶不上趟了

最终结果

最终结果
默认单元格边距.png

TA的精华主题

TA的得分主题

发表于 2019-10-1 23:00 | 显示全部楼层
楼主,看你图片这么排版,不如弃 Word 而用 Excel。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-8 08:40 | 显示全部楼层
不好意思 老师 假期忙 没看过帖子、用EXCEL么 可是我大部分都是排版的审计报告附注、EXCEL的话恐怕不行 因为还要打印 前面后面还有一大堆的文字叙述 我在网上参照了一些代码和您哪个帖子的代码如下
Sub 表格处理()
     On Error Resume Next
     Dim t As Table, n As Long
     If Selection.Information(wdWithInTable) = True Then Selection.Tables(1).Select: n = 1
     For Each t In ActiveDocument.Tables
         If n = 1 Then Set t = Selection.Tables(1) Else t.Select
         With t
             With .Rows
                 .WrapAroundText = False
                 .Alignment = wdAlignRowCenter
                 .HeightRule = wdRowHeightAtLeast
                 .Height = CentimetersToPoints(0.7)
             End With
             .Shading.BackgroundPatternColor = wdColorAutomatic
              Selection.Tables(1).Select
             .TopPadding = CentimetersToPoints(0)
              .BottomPadding = CentimetersToPoints(0)
              .LeftPadding = CentimetersToPoints(0)
              .RightPadding = CentimetersToPoints(0)
             With .Rows(1).Range.Font
                 .Name = "黑体"
                 .Name = "Arial Narrow"
                 .Bold = True
                 .Size = "五号"
             End With
         End With
         If n = 1 Then Exit For
     Next
End Sub
出来的效果如下 实现了单元格内默认边距 及字体 无法实现数字靠右对齐及标题居中对齐和最左侧靠左对齐及表内汉子的部分居中对齐 如图

宏运算后

宏运算后

TA的精华主题

TA的得分主题

发表于 2019-10-10 02:39 | 显示全部楼层
* 楼主,你好!——建议提供真实附件才好(当然关键信息应当处理一下),请试用下面的宏(因为表格是不规则表格,无法对其进行列宽设置,须自行手动设置列宽。本宏采用默认列宽):
  1. Sub aaab审计报告()

  2. '页面设置/默认2.54cm/3.17cm/A4纸张
  3.     Dim s As Section
  4.     For Each s In ActiveDocument.Sections
  5.         With s.PageSetup
  6.             If .Orientation = wdOrientPortrait Then
  7.                 .TopMargin = CentimetersToPoints(2.54)
  8.                 .BottomMargin = CentimetersToPoints(2.54)
  9.                 .LeftMargin = CentimetersToPoints(3.17)
  10.                 .RightMargin = CentimetersToPoints(3.17)
  11.                 .PageWidth = CentimetersToPoints(21)
  12.                 .PageHeight = CentimetersToPoints(29.7)
  13.             Else
  14.                 .TopMargin = CentimetersToPoints(2.5)
  15.                 .BottomMargin = CentimetersToPoints(2.5)
  16.                 .LeftMargin = CentimetersToPoints(2.54)
  17.                 .RightMargin = CentimetersToPoints(2.54)
  18.                 .PageWidth = CentimetersToPoints(29.7)
  19.                 .PageHeight = CentimetersToPoints(21)
  20.             End If
  21.             .HeaderDistance = CentimetersToPoints(1.5)
  22.             .FooterDistance = CentimetersToPoints(1.75)
  23.         End With
  24.     Next
  25.    
  26.    
  27. '循环遍历所有表格
  28.     Dim t As Table, m&, h&, i&
  29.     For Each t In ActiveDocument.Tables
  30.         With t
  31.             '取消文字环绕
  32.             With .Rows
  33.                 .WrapAroundText = False
  34.                 .Alignment = wdAlignRowLeft
  35.                 .LeftIndent = CentimetersToPoints(0)
  36.             End With

  37.             '默认单元格边距
  38.             .LeftPadding = CentimetersToPoints(0.19)
  39.             .RightPadding = CentimetersToPoints(0.19)
  40.             
  41.             '根据内容/窗口扩展表格
  42.             .AutoFitBehavior (wdAutoFitContent)
  43.             .Select
  44.             .AutoFitBehavior (wdAutoFitWindow)

  45.             '行高最小值
  46.             With .Rows
  47.                 .HeightRule = wdRowHeightAtLeast
  48.                 .Height = CentimetersToPoints(0.6)
  49.             End With
  50.             
  51.             '清除格式/设置字体段落格式
  52.             Selection.ClearFormatting
  53.             With .Range
  54.                 With .Font
  55.                     .NameFarEast = "宋体"
  56.                     .NameAscii = "Times New Roman"
  57.                     .Color = wdColorBlue '蓝色(本行代码可删除)
  58.                     .Kerning = 0
  59.                     .DisableCharacterSpaceGrid = True
  60.                 End With
  61.                 With .ParagraphFormat
  62.                     .Space1
  63.                     .Alignment = wdAlignParagraphCenter
  64.                     .AutoAdjustRightIndent = False
  65.                     .DisableLineHeightGrid = True
  66.                 End With
  67.                 .Cells.VerticalAlignment = wdCellAlignVerticalCenter
  68.             End With
  69.             
  70.             '''选定第 6 单元格
  71.             .Range.Cells(6).Select
  72.             m = Selection.Information(wdEndOfRangeRowNumber)
  73.             h = .Range.Information(wdMaximumNumberOfRows)
  74.             Selection.MoveDown Unit:=wdLine, Count:=h - m, Extend:=wdExtend
  75.             Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
  76.             
  77.             '''选定第 7 单元格
  78.             .Range.Cells(7).Select
  79.             m = Selection.Information(wdEndOfRangeRowNumber)
  80.             h = .Range.Information(wdMaximumNumberOfRows)
  81.             Selection.MoveDown Unit:=wdLine, Count:=h - m, Extend:=wdExtend
  82.             Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
  83.             
  84.             '''选定第 8 单元格
  85.             .Range.Cells(8).Select
  86.             m = Selection.Information(wdEndOfRangeRowNumber)
  87.             h = .Range.Information(wdMaximumNumberOfRows)
  88.             Selection.MoveDown Unit:=wdLine, Count:=h - m, Extend:=wdExtend
  89.             Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
  90.             
  91.             '''选定第 9 单元格
  92.             .Range.Cells(9).Select
  93.             m = Selection.Information(wdEndOfRangeRowNumber)
  94.             h = .Range.Information(wdMaximumNumberOfRows)
  95.             Selection.MoveDown Unit:=wdLine, Count:=h - m, Extend:=wdExtend
  96.             Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
  97.             
  98.             '''选定第 1 至第 5 单元格
  99.             With .Range
  100.                 i = 0
  101.                 Do
  102.                     i = i + 1
  103.                     .Cells(i).Range.Font.NameFarEast = "黑体"
  104.                     .Cells(i).Range.Bold = True
  105.                     .Cells(i).Range.Font.Color = wdColorRed '红色(本行代码可删除)
  106.                 Loop Until i = 5
  107.             End With
  108.             
  109.             '合计单元格
  110.             With .Range.Cells(34).Range
  111.                 .Font.NameFarEast = "黑体"
  112.                 .Font.Bold = True
  113.                 .Font.Color = wdColorPink
  114.                 .ParagraphFormat.Alignment = wdAlignParagraphCenter
  115.             End With

  116.         End With
  117.     Next
  118.    
  119.     Selection.HomeKey 6
  120.    
  121.     MsgBox "处理完毕!!!!!!!!!!", 0 + 48, "审计报告"
  122. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-10-12 15:53 | 显示全部楼层
我也是审计所的排版人员,一直在想能不能弄个自动排版报告的宏。楼主要不要加个联系方式一起探讨一下啊哈哈,

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-16 21:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2019-10-10 02:39
* 楼主,你好!——建议提供真实附件才好(当然关键信息应当处理一下),请试用下面的宏(因为表格是不规则 ...

好的 老师 我研究下 然后再来请教 十分感谢 辛苦了 !

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-16 21:49 | 显示全部楼层
权花錵 发表于 2019-10-12 15:53
我也是审计所的排版人员,一直在想能不能弄个自动排版报告的宏。楼主要不要加个联系方式一起探讨一下啊哈哈 ...

可以啊 同病相连的人

TA的精华主题

TA的得分主题

发表于 2019-10-18 11:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我看了你的问题自己弄了下代码,测试过了也能运行,你要的要求也达到了。

Sub 表格格式()

Dim mytable As table
    For Each mytable In ActiveDocument.Tables
    With mytable  
     .PreferredWidthType = wdPreferredWidthPoints '将表格宽度方式设定为固定值
     .PreferredWidth = CentimetersToPoints(16.25)  '将表格宽度方式设定为16.25
     .Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '表格第一行设定为居中
     .LeftPadding = CentimetersToPoints(0) '左边单元格边距为0
     .RightPadding = CentimetersToPoints(0)'右边单元格边距为0
    End With
    Next
End Sub
其实楼主可以买些书来看看,excelhome出的别怕vba其实很简单这书还是不错的,虽然讲的是excelvba,不是wordvba,但是语法结构都有介绍,大体也通用。了解语法结构了,再尝试自己写代码。你这个代码我是通过宏录制然后再用循环语句来达到要求的。楼主有好的代码也可以来跟我分享qq2311581496,如果解决了你的问题你就采取我的答案吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 08:25 , Processed in 0.050675 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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