ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] WORD调整不同表格的尺寸

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-5 21:09 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下为本人自己录制的WORD宏,如何修改,才能将光标之下的所有表格宽度都设置成7inch且居中!


Sub TableSize()
'
' TableSize Macro
'
'
    Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
    Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
    Selection.Tables(1).PreferredWidth = InchesToPoints(7)
End Sub


TA的精华主题

TA的得分主题

发表于 2019-6-6 02:28 | 显示全部楼层
本帖最后由 413191246se 于 2019-6-7 13:21 编辑

略。。。。

TA的精华主题

TA的得分主题

发表于 2019-6-6 11:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
光标之下的所有表格,是光标选中的表格还是从光标位置到文档结尾的所有表格?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-7 09:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
daibao88 发表于 2019-6-6 11:02
光标之下的所有表格,是光标选中的表格还是从光标位置到文档结尾的所有表格?

从光标位置到文档结尾的所有表格,请问宏应该如何编写?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-7 09:16 | 显示全部楼层
daibao88 发表于 2019-6-6 11:02
光标之下的所有表格,是光标选中的表格还是从光标位置到文档结尾的所有表格?

从光标位置到文档结尾的所有表格,表格未选中,且表格与表格之间有空格,请问宏该如何编写?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-7 09:26 | 显示全部楼层

非常感谢,我需要仅仅改变光标之下的所有未选择表格,光标之上的所有表格不做改变,请问宏该如何修改?

TA的精华主题

TA的得分主题

发表于 2019-6-7 11:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
借用楼上代码
Sub ResizeAllTables()
'设置所有表格宽度
'循环遍历所有表格
Dim myrange As range
Set myrange = ActiveDocument.range(Selection.Start, ActiveDocument.range.End)
    Dim t As Table
    For Each t In myrange.Tables
        With t
            With .range.Rows
                .WrapAroundText = False '取消文字环绕
                .Alignment = wdAlignRowCenter '居中
            End With
            .PreferredWidthType = wdPreferredWidthPoints
            .PreferredWidth = InchesToPoints(7)
        End With
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-7 13:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼上朋友,你好!——没必要增加一个变量,用 Selection 代替 ActiveDocument 即可:
  1. Sub ResizeAllTables()
  2. '设置所有表格宽度/循环遍历所有表格(选定区域)
  3.     Dim t As Table
  4.     With Selection
  5.         .EndKey 6, 1
  6.         For Each t In .Tables
  7.             With t
  8.                 With .Range.Rows
  9.                     .WrapAroundText = False '取消文字环绕
  10.                     .Alignment = wdAlignRowCenter '居中
  11.                 End With
  12.                 .PreferredWidthType = wdPreferredWidthPoints
  13.                 .PreferredWidth = InchesToPoints(7)
  14.             End With
  15.         Next
  16.     End With
  17. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-7 20:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 Tobin_Zhang 于 2019-6-7 21:28 编辑
daibao88 发表于 2019-6-7 11:02
借用楼上代码
Sub ResizeAllTables()
'设置所有表格宽度
宏A:调整
WORD中图片尺寸并删除.JPG

Sub Adjust_ImageSize()
'
' Adjust_ImageSize Macro
'
'
Dim i As Integer
For i = 1 To ActiveDocument.InlineShapes.Count
With ActiveDocument.InlineShapes(i)
.Height = 2.55 * 2.54 * 28.35
.Width = 3.39 * 2.54 * 28.35
.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
.Borders(wdBorderTop).LineWidth = wdLineWidth050pt
.Borders(wdBorderTop).Color = wdColorAutomatic
End With
Next i
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ".JPG"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
   
End Sub


宏B:调整光标后表格尺寸
Sub Resize_AllTables()
'????????????
'?????????????
Dim myrange As Range
Set myrange = ActiveDocument.Range(Selection.Start, ActiveDocument.Range.End)
    Dim t As Table
    For Each t In myrange.Tables
        With t
            With .Range.Rows
                .WrapAroundText = False '??????????
                .Alignment = wdAlignRowCenter '????
            End With
            .PreferredWidthType = wdPreferredWidthPoints
            .PreferredWidth = InchesToPoints(7)
        End With
    Next
End Sub

您好!宏A是我自己录制的一个修改WORD中图片尺寸并删除.JPG的宏,目前我想将宏A与宏B合并,期望效果如下:修改光标后表格尺寸为7inch,光标后图片尺寸为Height = 2.55 * 2.54 * 28.35   Width = 3.39 * 2.54 * 28.35,删除光标之后的".JPG“,光标仍停留在最初位置!当图片较多时,WORD修改图片尺寸的宏有些卡,不知道是否是由于程序过于臃肿引起的,请高手指导一下宏A与宏B应该如何简化程序进行合并/修改,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-7 21:32 | 显示全部楼层
413191246se 发表于 2019-6-7 13:19
楼上朋友,你好!——没必要增加一个变量,用 Selection 代替 ActiveDocument 即可:

非常感谢,由于楼上的程序运行后,未改变光标位置,未选择光标后的内容,所以本人觉得他的更完美!楼主如果用selection修改一下程序或许也非常完美,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 21:00 , Processed in 0.035366 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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