Sub 選中所有表格()Dim aTable As TableApplication.ScreenUpdating = FalseActiveDocument.DeleteAllEditableRanges wdEditorEveryoneFor Each aTable In ActiveDocument.TablesaTable.Range.Editors.Add wdEditorEveryoneNextActiveDocument.SelectAllEditableRanges wdEditorEveryoneActiveDocument.DeleteAllEditableRanges wdEditorEveryoneApplication.ScreenUpdating = True
End Sub
通過豆包/deepseek解釋代碼含義,指令為:這是一串word中vba代碼,請逐條解釋每行代碼的意思,并將代碼和解釋的內容整合到一起。
代碼邏輯詳解:
-
權限操作技巧
通過臨時給表格添加wdEditorEveryone
(所有人可編輯)權限,利用SelectAllEditableRanges
方法實現多選區選中。這是Word VBA中間接選中多個非連續區域(如多個表格)的常用技巧。 -
wdEditorEveryone 常量
屬于WdEditorType
枚舉,值為1
,代表"任何可以打開文檔的人"。該參數通常用于協作場景,此處僅作為選區工具使用。 -
性能優化
ScreenUpdating
的設置避免了反復刷新界面,顯著提升代碼執行速度(對含大量表格的文檔尤其明顯)。
' 定義一個名為“選中所有表格”的子程序,用于執行選中文檔中所有表格的操作
Sub 選中所有表格()' 聲明一個 Table 類型的變量 aTable,用于在后續循環中引用文檔中的表格Dim aTable As Table' 關閉 Word 應用程序的屏幕更新功能,提高代碼執行效率,避免屏幕閃爍Application.ScreenUpdating = False' 刪除當前活動文檔中所有用戶的可編輯區域,清除之前可能存在的可編輯區域標記ActiveDocument.DeleteAllEditableRanges wdEditorEveryone' 開始一個 For Each 循環,遍歷當前活動文檔中的所有表格For Each aTable In ActiveDocument.Tables' 為當前表格的范圍添加所有用戶的編輯權限,將表格標記為可編輯區域aTable.Range.Editors.Add wdEditorEveryone' 結束 For Each 循環,程序回到循環起始處處理下一個表格Next' 選中當前活動文檔中所有用戶可編輯的區域,即之前標記的所有表格ActiveDocument.SelectAllEditableRanges wdEditorEveryone' 再次刪除當前活動文檔中所有用戶的可編輯區域,清除之前添加的可編輯權限標記ActiveDocument.DeleteAllEditableRanges wdEditorEveryone' 重新開啟 Word 應用程序的屏幕更新功能,恢復正常的屏幕顯示更新Application.ScreenUpdating = True
' 結束“選中所有表格”子程序
End Sub
參考:【一次性選擇word文檔中的全部表格】 https://www.bilibili.com/video/BV1QX4y1J7gd/?share_source=copy_web&vd_source=e2338c063cd49188a452094eb0b6f740