近来需要编辑一个文档,其中有一个问题,就是把表格都设置为100宽,因为表格很多,处理很麻烦,于是就打算学下vba,把表格处理好.
把内容存下来用于后续参考。
宏的简单操作
宏一个实用操作就是 录用-> 执行,
比如,设置ctrl+shift+b 就自动 插入一个只有一列的表格,具体可参考:
https://jingyan.baidu.com/article/ea24bc39ba09dcda62b331fa.html
查看录制宏的vba脚本
视图->宏->查看宏
->编辑
Sub 宏2()
'
' 宏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 With
End 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 = True
End Sub
宏->查看宏->填好名字后,创建
把上面的脚本填上去, 这个脚本 是把表格设置成 100,可把100设置成其它值,然后按 运行,即可把word中的所有表格都设置成 指定宽度.