Microsoft的在word中选择文档中的所有表格进行字体和格式的调整时的解决方案

找到宏

创建 并粘贴

使用

bas 复制代码
Sub 全选所有表格()
Dim t As Table
an = MsgBox("即将选择选区内所有表格,若无选区,则选择全文表格。", vbYesNo, "reboot提醒您!")
If an - 6 Then Exit Sub
Set rg = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
For Each t In rg.Tables
    t.Range.Editors.Add wdEditorEveryone
Next
ActiveDocument.SelectAllEditableRanges wdEditorEveryone
ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
End Sub

Sub 全选所有表格首行()
Dim t As Table
Dim firstRow As Row
an = MsgBox("即将选择选区内所有表格的首行,若无选区,则选择全文表格的首行。", vbYesNo, "reboot提醒您!")
If an - 6 Then Exit Sub
Set rg = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
For Each t In rg.Tables
    If t.Rows.Count >= 1 Then
        Set firstRow = t.Rows(1)
        firstRow.Range.Editors.Add wdEditorEveryone
    End If
Next
ActiveDocument.SelectAllEditableRanges wdEditorEveryone
ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
End Sub

Sub 全选所有表格_调整格式()
    Dim t As Table
    Dim an As Integer
    Dim rg As Range
    Dim tableCount As Integer
    Dim cell As cell
    
    ' 确认提示
    an = MsgBox("即将格式化选区内所有表格,若无选区,则格式化全文表格。" & vbCrLf & _
                "操作包括:" & vbCrLf & _
                "1. 根据窗口调整宽度" & vbCrLf & _
                "2. 平均分布各行" & vbCrLf & _
                "3. 设置行高为1厘米" & vbCrLf & _
                "4. 设置单元格文本左对齐", vbYesNo, "reboot提醒您!")
    
    If an <> vbYes Then Exit Sub
    
    ' 确定操作范围
    Set rg = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
    tableCount = 0
    
    ' 直接遍历表格并应用格式
    Application.ScreenUpdating = False
    For Each t In rg.Tables
        ' 应用表格级格式
        t.AutoFitBehavior wdAutoFitWindow
        t.Rows.DistributeHeight
        t.Rows.Height = CentimetersToPoints(1)
        t.Rows.HeightRule = wdRowHeightExactly
        
        ' 遍历单元格设置对齐方式
        For Each cell In t.Range.Cells
            cell.VerticalAlignment = wdCellAlignVerticalCenter ' 垂直居中
            cell.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft ' 水平左对齐
        Next cell
        
        tableCount = tableCount + 1
    Next t
    Application.ScreenUpdating = True
    
    ' 提示结果
    If tableCount > 0 Then
        MsgBox "已成功格式化 " & tableCount & " 个表格!", vbInformation
    Else
        MsgBox "未找到可格式化的表格!", vbExclamation
    End If
End Sub
相关推荐
天天代码码天天30 分钟前
PP-OCRv5 C++封装DLL C#调用源码分享
开发语言·c++·c#·ocr
江沉晚呤时43 分钟前
深入了解 C# 异步编程库 AsyncEx
java·前端·数据库·c#·.netcore
快乐飒男1 小时前
c#基础08(数组)
c#
Hare_bai1 小时前
WPF的UI交互基石:数据绑定基础
ui·c#·wpf·交互·xaml
归途醉染2 小时前
C# Costura.Fody 排除多个指定dll
开发语言·c#
CopyLower2 小时前
设计一个支持100,000 QPS的评论中台系统架构:技术实践与实现指南
系统架构·c#·linq
vvilkim2 小时前
C# 数组与字符串:全面解析与应用实践
开发语言·算法·c#
我有一棵树5 小时前
【AI工具应用】使用 trae 实现 word 转成 html
word
铭记北宸5 小时前
使用微软最近开源的WSL在Windows上优雅的运行Linux
windows·microsoft·开源·wsl
coredx5 小时前
如何在 .NET 中构建一个好用的动态查询生成器
c#·.net·linq·ef core·表达式树