word的宏_vba统一设置表格宽度

来源:互联网 发布:枸杞 怎么泡水 知乎 编辑:程序博客网 时间:2024/03/29 01:42

近来需要编辑一个文档,其中有一个问题,就是把表格都设置为100宽,因为表格很多,处理很麻烦,于是就打算学下vba,把表格处理好.
把内容存下来用于后续参考。

宏的简单操作

宏一个实用操作就是 录用-> 执行,
比如,设置ctrl+shift+b 就自动 插入一个只有一列的表格,具体可参考:
https://jingyan.baidu.com/article/ea24bc39ba09dcda62b331fa.html

查看录制宏的vba脚本

视图->宏->查看宏
这里写图片描述

->编辑

Sub2()'' 宏2 宏''    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=8, NumColumns:= _        1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _        wdAutoFitFixed    With Selection.Tables(1)        If .Style <> "网格型" Then            .Style = "网格型"        End If        .ApplyStyleHeadingRows = True        .ApplyStyleLastRow = False        .ApplyStyleFirstColumn = True        .ApplyStyleLastColumn = False        .ApplyStyleRowBands = True        .ApplyStyleColumnBands = False    End WithEnd Sub

上面的内容如果没怎么了解语法,可能看不懂,但更多都是table对象的操作,可参考api

可查看word 相关对象的方法(感觉这个网站操作不太便捷,建议在vba的编辑界面,可视图->对象浏览器 查看相关对象.)
https://msdn.microsoft.com/zh-cn/vba/word-vba/articles/table-applystyleheadingrows-property-word

自己写一个vba脚本

设置所有的table为100的脚本

Sub table_100()''  宏'',    Dim tempTable As Table    Application.ScreenUpdating = False    '判断文档是否被保护    If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then        MsgBox "文档已保护,此时不能选中多个表格!"        Exit Sub    End If    '删除所有可编辑的区域    ActiveDocument.DeleteAllEditableRanges wdEditorEveryone    '添加可编辑区域    For Each tempTable In ActiveDocument.Tables        tempTable.Range.Editors.Add wdEditorEveryone        tempTable.PreferredWidthType = wdPreferredWidthPercent        tempTable.PreferredWidth = 100    Next    '选中所有可编辑区域    ActiveDocument.SelectAllEditableRanges wdEditorEveryone    '删除所有可编辑的区域    ActiveDocument.DeleteAllEditableRanges wdEditorEveryone    Application.ScreenUpdating = TrueEnd Sub

宏->查看宏->填好名字后,创建
这里写图片描述

把上面的脚本填上去, 这个脚本 是把表格设置成 100,可把100设置成其它值,然后按 运行,即可把word中的所有表格都设置成 指定宽度.
这里写图片描述