如何用vba批量修改ppt中表格的文字字体、边框、单元格填充色的格式?

表格在office的不同组件中都存在。

在excel中所有都是表格,word中可以插入表格,ppt中也可以插入表格。

在vba中,excel的表格是以range对象存在的,word中的表格是以table对象存在的,同样的ppt中的表格也是以table对象存在的。

不同的是ppt中的表格table对象是shape对象的子集。

我们可以使用shape对象的HasTable属性判断指定的图形是否为表格。

ppt中的表格table对象具有ColumnsRows集合和CellRange集合。

其中CellRange集合代表表格中的某行或者某列的所有单元格集合。

如果要返回CellRange集合对象,可以使用table对象的Column对象和Row对象的Cells属性。

如果要访问PPT中具体的表格中的单个单元格,可以使用Cell方法,指定行、列序号。

用vba处理ppt的表格,其中最常做的就是处理表格的格式,比如设置表格中字体的颜色、修改表格中的字体、修改表格中边框的颜色、修改表格中单元格的填充色等。

其中修改表格中边框的颜色,可以使用Borders属性返回上下左右对角线的边框,然后再设置格式。

修改表格中单元格的填充色,可以使用FillFormat对象的ForeColor属性。

基于以上的知识,可以使用如下的代码处理ppt中的表格:

Sub QQ1722187970()
    '形状对象
    Dim oShape As Shape
    '幻灯片对象
    Dim oSlide As Slide
    '返回文本区域对象
    Dim oRng As TextRange
    '表格对象
    Dim oTable As Table
    '表格单元格对象
    Dim oCell As Cell
    Dim oPPT As Presentation
    Set oPTT = PowerPoint.ActivePresentation
    With oPTT
        For Each oSlide In .Slides
            With oSlide
                For Each oShape In .Shapes
                    With oShape
                        '判断是否含有表格
                        If .HasTable Then
                            Set oTable = .Table
                            With oTable
                                iCol = .Columns.Count
                                iRow = .Rows.Count
                                For i = 1 To iRow
                                    For j = 1 To iCol
                                        Set oCell = .Cell(i, j)
                                        Set oRng = .Cell(i, j).Shape.TextFrame.TextRange
                                        '设置某个字的颜色
                                        With oRng.Characters(1, 3)
                                            .Font.Color = RGB(255, 255, 0)
                                        End With
                                        '设置字体的颜色
                                        With oRng.Font
                                            '各种格式设置
                                            .Color = vbRed
                                        End With
                                        With oCell
                                            '设置单元格的填充色
                                            .Shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
                                        End With
                                        '设置某个边框线的颜色
                                        With oCell.Borders(ppBorderBottom)
                                            .ForeColor.RGB = RGB(255, 4, 4)
                                        End With
                                    Next j
                                Next i
                            End With
                        End If
                    End With
                Next
            End With
        Next
    End With
End Sub

 

       

发表评论