乐于分享
好东西不私藏

wps美化表格

wps美化表格
vba代码如下,一键美化表格,经过多次尝试,最终使用了下面的代码

Sub 美化表格()

    Dim tbl As Table

    Dim cel As Cell

    Dim para As Paragraph

    Dim r As Row          ' 显式声明行变量

    ' 确保光标在表格内

    If Not Selection.Information(wdWithInTable) Then

        MsgBox "请将光标放在要美化的表格内!"

        Exit Sub

    End If

    Set tbl = Selection.Tables(1)

    If tbl Is Nothing Then Exit Sub

    ' 1. 自动适应窗口

    On Error Resume Next   ' 临时忽略可能的小错误,后续再恢复

    tbl.AutoFitBehavior (wdAutoFitWindow)

    On Error GoTo 0

    ' 2. 设置表格宽度(若表格存在)

    If tbl.Rows.Count > 0 Then

'        tbl.PreferredWidth = 675   ' 单位磅,可自行调整

    End If

    ' 3. 设置所有行高为最小值(自动)

'    For Each r In tbl.Rows

'        r.HeightRule = wdRowHeightAtLeast

'        r.Height = 0.01   ' 厘米

'    Next r

    ' 4. 单元格垂直居中 + 段落格式重置(居中 + 单倍行距 + 缩进清零)

    For Each cel In tbl.Range.Cells

        cel.VerticalAlignment = wdCellAlignVerticalCenter

        For Each para In cel.Range.Paragraphs

            With para

                .Alignment = wdAlignParagraphCenter

                .LineSpacingRule = wdLineSpaceSingle

                .LeftIndent = 0

                .RightIndent = 0

                .FirstLineIndent = 0

                .CharacterUnitLeftIndent = 0

                .CharacterUnitRightIndent = 0

                .CharacterUnitFirstLineIndent = 0

                 .FirstLineIndent = CentimetersToPoints(0)

            End With

        Next para

    Next cel

    ' 5. 设置第一行为标题行(重复)——需确保至少有一行

'    If tbl.Rows.Count >= 1 Then

'        tbl.Rows(1).HeadingFormat = True

'    End If

    ' 6. 第一行内容左对齐(可根据需求改为左对齐)

  If tbl.Rows.Count >= 1 Then

    On Error Resume Next

    Dim rw As Row

    Set rw = tbl.Range.Rows(1)   ' 改用 Range.Rows(1)

    On Error GoTo 0

    If Not rw Is Nothing Then

        For Each cel In rw.Cells

            For Each para In cel.Range.Paragraphs

                para.Alignment = wdAlignParagraphCenter

'                wdAlignParagraphLeft

            Next para

        Next cel

    End If

End If

    ' 7. 段落格式:禁用行高网格 + 与下段同页

    With tbl.Range.ParagraphFormat

        .DisableLineHeightGrid = True

        .KeepWithNext = False '不能分页

    End With

    ' 8. (可选)设置列宽为固定点数,这里按需求开启

    ' Dim col As Column

    ' For Each col In tbl.Columns

    '     col.Cells.PreferredWidthType = wdPreferredWidthPoints

    '     col.Cells.PreferredWidth = 100   ' 各列统一宽度,可按列索引单独设

    ' Next col

'    MsgBox "表格美化完成!"

End Sub

相关学习资料