Word 由于一般人都只用来打打字,所以用到VBA的场景不多。但是对于写手、科研工作者,经常要用Word写文章,遇到一个长篇文章,需要批量调整格式内容时,VBA就有用武之地了。比如最近拿到了一个91页Word,里面有不少表格,具体数目不详,每个表格的宽度都不一样,有些宽,有些窄,如下面所示
现在要把所有这些表格批量调整成统一的大小,如果手动,有91页,调整完估计要花不少时间,而且效率极低。 这时候我们可以选择用vba来实现,但凡批量重复的事情交给vba是不二选择。
在Word中,表格的大小可以根据内容自动调整,也可以根据窗口自动调整,还可以设置为固定的列度。如果是根据内容自动调整,那么所有的表格就都会根据表格里面的内容来自适应的调整表格宽度,这样就会导致表格的大小不统一。如果设置为固定的列宽,那么表格的内容就会有些无法自适应显示。所以,要统一所有表格的大小,我们应该选择
根据窗口自动调整。为了用VBA实现根据窗口自动调整,我们可以先对这操作录制宏
然后
找到录制的宏代码
Sub 宏1()
'
' 宏1 宏
'
'
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
End Sub
发现要把word表格调整成和窗口一样,代码是
Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)最后需要了解下word中的对象层级关系 整个word文档对象是Document,所有的word表格隶属于Tables集合对象,Tables集合对象又隶属于Document对象。 有了上述的层级关系,我们就可以构建如下的vba代码:
Sub 宏1()'' 宏1 宏' Dim oDoc As Document Set oDoc = Word.ActiveDocument Dim oTable As Table For Each oTable In oDoc.Tables oTable.AutoFitBehavior (wdAutoFitWindow) NextEnd Sub
在代码窗格中按下F5运行上述代码,整个文档的所有表格就都根据窗口自动调整表格了。
这就是word vba的学习路径,先用录制宏找到关键的操作的代码,然后了解清楚对象之间的层级关系,其余的就是vba基础知识的拼凑。