ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word调整全文的表格为字体和行距的宏什么写呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-11-24 18:28 | 显示全部楼层 |阅读模式
  1. Sub 表格全部紧缩()
  2. '1.如果选定区域,则处理选定区域表格;
  3. '2.否则,如果光标在表格中,则处理当前表格;
  4. '3.如果光标在表格外,则处理所有表格。
  5.     Dim t As Table, r As Range
  6.     With Selection
  7.         If .Type = wdSelectionIP Then
  8.             If .Information(wdWithInTable) = True Then
  9.                 Set t = .Tables(1)
  10.                 Set r = .Tables(1).Range
  11.             Else
  12.                 Set r = ActiveDocument.Content
  13.             End If
  14.         Else
  15.             Set r = .Range
  16.         End If
  17.     End With
  18.     For Each t In r.Tables
  19.         With t
  20.             With .Rows
  21.                 .WrapAroundText = False
  22.                 .Alignment = wdAlignRowCenter
  23.                 .HeightRule = wdRowHeightAtLeast
  24.                 .Height = CentimetersToPoints(0)
  25.             End With
  26.             With .Range
  27.                 With .Font
  28.                     .Size = 10
  29.                     .Kerning = 0
  30.                     .DisableCharacterSpaceGrid = True
  31.                 End With
  32.                 With .ParagraphFormat
  33.                     .Space1
  34.                     .Alignment = wdAlignParagraphCenter
  35.                     .AutoAdjustRightIndent = False
  36.                     .DisableLineHeightGrid = True
  37.                 End With
  38.                 .Cells.VerticalAlignment = wdCellAlignVerticalCenter
  39.             End With
  40.             .AutoFitBehavior (wdAutoFitContent)
  41.         End With
  42.     Next
  43. End Sub
复制代码

之前有个这个宏,看能用上不,但是这个宏的功能是调整表格缩进目前需要:
将全文中的表格(全文可能有文章,可能有表格),设置为“五号”字体、“1.0倍行距”
请问这种宏什么实现呢?

TA的精华主题

TA的得分主题

发表于 2021-11-25 01:37 | 显示全部楼层
本帖最后由 413191246se 于 2021-11-27 21:05 编辑

略。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-27 14:04 | 显示全部楼层
413191246se 发表于 2021-11-25 01:37
* 楼主 有福了!我刚刚重新扩展编辑了此宏,请试用!

谢谢回复,测试可以用,但是你的这个表格的行距不会缩紧,需要手动拉小,请问这个能加一条吗?

TA的精华主题

TA的得分主题

发表于 2021-11-27 21:05 | 显示全部楼层
* 楼主,你自己将 .Height = xxxxxx(0.9) 这个 0.9 厘米 改小即可,如改为 0.5 或 0.6,请试用最新版本:
  1. Sub TableProcess_Update()
  2. '表格处理 -> 光标在表格外处理所有表格;否则当前表格(选定则选区表格)

  3.     Dim r As Range, t As Table, c As Cell, i As Paragraph, a As Row, x&, y&, z&, j&, k&, e&, n&

  4.     PaperSetup

  5.     With ActiveDocument
  6.         .Fields.Unlink
  7.         .ConvertNumbersToText
  8.         .Content.Find.Execute "^l", , , 0, , , , , , "^p", 2
  9.     End With

  10.     With Selection
  11.         If .Type = wdSelectionIP Then
  12.             If .Information(wdWithInTable) = True Then
  13.                 Set t = .Tables(1)
  14.                 Set r = .Tables(1).Range
  15.             Else
  16.                 Set r = ActiveDocument.Content
  17.             End If
  18.         Else
  19.             Set r = .Range
  20.         End If
  21.     End With

  22.     For Each t In r.Tables
  23.         With t
  24.             '取消环绕/左对齐/左缩进
  25.             With .Rows
  26.                 .WrapAroundText = False
  27.                 .Alignment = wdAlignRowLeft
  28.                 .LeftIndent = CentimetersToPoints(0)
  29.                 .HeightRule = wdRowHeightAtLeast
  30.                 .Height = CentimetersToPoints(0.9)
  31.             End With

  32.             '清除格式
  33.             With .Range
  34.                 .Next.InsertParagraphBefore
  35.                 .MoveEnd
  36.                 .Select
  37.                 CommandBars.FindControl(ID:=122).Execute
  38.                 Selection.ClearFormatting
  39.                 .MoveEnd 1, -1
  40.                 With .Font
  41.                     .Size = 12
  42.                     .Color = wdColorBlue
  43.                     .Kerning = 0
  44.                     .DisableCharacterSpaceGrid = True
  45.                 End With
  46.                 With .ParagraphFormat
  47.                     .Alignment = wdAlignParagraphCenter
  48.                     .AutoAdjustRightIndent = False
  49.                     .DisableLineHeightGrid = True
  50.                 End With
  51.                 .Cells.VerticalAlignment = wdCellAlignVerticalCenter
  52.                 .Next.Delete

  53.                 '判断表格是否规则(e=1=规则/e=0=不规则)
  54.                 x = .Information(wdEndOfRangeRowNumber)
  55.                 y = .Information(wdEndOfRangeColumnNumber)
  56.                 z = .Cells.Count
  57.             End With
  58.             If x <> 1 Then
  59.                 If z = x * y Then
  60.                     For k = 1 To y
  61.                         For j = 1 To x - 1
  62.                             If .Cell(j + 1, k).Width = .Cell(j, k).Width Then e = 1 Else e = 0
  63.                             If e = 0 Then Exit For
  64.                         Next j
  65.                         If e = 0 Then Exit For
  66.                     Next k
  67.                 Else
  68.                     e = 0
  69.                 End If
  70.             Else
  71.                 e = 1
  72.             End If

  73.             '删除空段
  74.             For Each c In .Range.Cells
  75.                 For Each i In c.Range.Paragraphs
  76.                     If Asc(i.Range) = 13 And Len(i.Range) = 1 Then i.Range.Delete
  77.                 Next
  78.                 With c.Range.Paragraphs
  79.                     If .Count > 1 And Len(.Last.Range) = 2 Then .Last.Previous.Range.Characters.Last.Delete
  80.                 End With
  81.             Next

  82.             '表头加粗
  83.             .Cell(1, 1).Select
  84.             With Selection
  85.                 .SelectRow
  86.                 With .Font
  87.                     .NameFarEast = "黑体"
  88.                     .Bold = True
  89.                     .Color = wdColorPink
  90.                 End With
  91.                 With .Range.Find
  92.                     .Execute "^w", , , 0, , , , , , "", 2
  93.                     .Execute " ", , , 0, , , , , , "", 2
  94.                 End With
  95.             End With

  96.             If e = 1 Then
  97.                 '删除序号
  98.                 If .Cell(1, 1).Range Like "序号*" Then
  99.                     ActiveDocument.Range(Start:=.Cell(2, 1).Range.Start, End:=.Cell(x, 1).Range.End).Delete
  100.                 End If

  101.                 '删除空行
  102.                 For Each a In .Rows
  103.                     If Len(Replace(Replace(a.Range.Text, vbCr, ""), Chr(7), "")) = 0 Then a.Delete
  104.                 Next

  105.                 '序号自动
  106.                 If .Cell(1, 1).Range Like "序号*" Then
  107.                     ActiveDocument.Range(Start:=.Cell(2, 1).Range.Start, End:=.Cell(x, 1).Range.End).Select
  108.                     n = 0
  109.                     For Each c In Selection.Cells
  110.                         n = n + 1
  111.                         c.Range.Text = n
  112.                     Next
  113.                 End If
  114.             End If

  115.             '边距
  116.             .LeftPadding = CentimetersToPoints(0.19)
  117.             .RightPadding = CentimetersToPoints(0.19)
  118.             .AutoFitBehavior (wdAutoFitContent)
  119.             .Select
  120.             .AutoFitBehavior (wdAutoFitWindow)
  121.         End With
  122.     Next
  123. '    Selection.HomeKey Unit:=wdStory
  124. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-11-28 17:32 | 显示全部楼层
413191246se 发表于 2021-11-27 21:05
* 楼主,你自己将 .Height = xxxxxx(0.9) 这个 0.9 厘米 改小即可,如改为 0.5 或 0.6,请试用最新版本:

谢谢提醒,找到行距位置了,但是这个有个bug,就是如果表格里面有英文内容的话,被把空格给处理没

TA的精华主题

TA的得分主题

发表于 2021-11-28 20:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,你将 4 楼代码中,第 100 - 103 行的代码屏蔽(注释)掉,就可以了,因为我是针对中文表头必须要删除空格的。

TA的精华主题

TA的得分主题

发表于 2021-11-28 22:52 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-29 19:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2021-11-27 21:05
* 楼主,你自己将 .Height = xxxxxx(0.9) 这个 0.9 厘米 改小即可,如改为 0.5 或 0.6,请试用最新版本:

image.png
你好,你把之前2楼的宏删了呢?我的宏掉了,我刚才运行您最新这个宏无法运行,麻烦请看下呢

TA的精华主题

TA的得分主题

发表于 2022-1-30 22:46 | 显示全部楼层
楼主,你好!——请将“PaperSetup”这行代码删除或屏蔽(前面打个‘号)均可,意思是“页面设置”为A4纸张。

TA的精华主题

TA的得分主题

发表于 2022-2-18 09:46 | 显示全部楼层
表格中,大于一行的段落,左对齐怎么设置?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-29 20:23 , Processed in 0.026242 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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