【问题标题】:Changing Font Outline color inside a Table Cell with VBA using Application.CommandBar.ExecuteMSO使用 Application.CommandBar.ExecuteMSO 使用 VBA 更改表格单元格内的字体轮廓颜色
【发布时间】:2020-02-17 20:25:30
【问题描述】:

Win10x64 Office 365 PPT v 16.0.12325.202080 64 位

为了便于阅读,我需要显示一个字体颜色为黄色但轮廓为黑色的字符。这个字符进入一个 Powerpoint 表格单元格。

下面的链接有一个我目前正在使用的方法,它包括创建一个虚拟形状、向其中添加文本、修改形状的 textframe2 textrange 字体行属性,然后将其复制并粘贴回表格单元格。

http://www.vbaexpress.com/forum/archive/index.php/t-43787.html

这是 8 年前提出的问题,但我目前看到了相同的行为,即我们无法直接操作单元格内文本的 textframe2 wordart 格式。该程序不显示错误但不起作用。

我已经放弃尝试直接从 VBA 修改 textrame2 textrange 字体行属性。

我已经设法让它激活字体轮廓颜色使用 Application.CommandBars.ExecuteMso ("TextOutlineColorPicker")

激活后,我以为我可以修改 textframe2 textrange 字体行属性,但它仍然不起作用。

是否有用于更改表格单元格内的字体轮廓颜色和字体轮廓线宽度的 Application.CommandBars idMso?

或者在表格单元格中粘贴格式化文本以外的其他方式。

编辑: 添加图像来说明我所说的文本颜色和文本轮廓颜色的含义以及用于在红色圆圈中显示它们的菜单:

编辑2 添加了另一个快照以举例说明具有黑色轮廓的单元格内的字符和没有轮廓的单元格内的字符

谢谢

【问题讨论】:

    标签: vba office365 powerpoint


    【解决方案1】:

    这是一个访问给定幻灯片上的Table 并更改一个单元格属性的示例。我使用的示例幻灯片如下所示

    代码本身创建了一个函数,允许您从特定幻灯片中选择一个表格,以及表格中的单个单元格并突出显示它。

    Option Explicit
    
    Sub test()
        HighlightTableCell 1, 2, 3
    End Sub
    
    Sub HighlightTableCell(ByVal slideNumber As Long, _
                           ByVal thisRow As Long, _
                           ByVal thisCol As Long)
        Dim theSlide As Slide
        Set theSlide = ActivePresentation.Slides(slideNumber)
    
        Dim shp As Shape
        For Each shp In theSlide.Shapes
            If shp.Type = msoTable Then
                Dim theTable As Table
                Set theTable = shp.Table
                With theTable.Cell(thisRow, thisCol)
                    With .Shape.TextFrame2.TextRange.Characters.Font.Fill
                        .Visible = msoTrue
                        .ForeColor.RGB = RGB(255, 255, 0)
                        .Transparency = 0
                        .Solid
                    End With
                    With .Shape.TextFrame2.TextRange.Characters.Font.Line
                        .Visible = msoTrue
                        .ForeColor.ObjectThemeColor = msoThemeColorText1
                        .ForeColor.TintAndShade = 0
                        .ForeColor.Brightness = 0
                        .Transparency = 0
                    End With
                End With
            End If
        Next shp
    End Sub
    

    【讨论】:

    • 感谢您的回答,不幸的是,这并没有解决我的问题。我不需要更改单元格填充颜色。我需要将单元格文本设置为黄色,将单元格字体轮廓颜色设置为黑色。
    • 我添加了将背景颜色更改为红色的行,如果您愿意,可以删除该行。我添加它是因为没有它,我的示例表格单元格(2,3)在白色背景上显示黄色文本。很难看到。如果您愿意,请将其删除。如果表格没有应用样式(没有样式,没有网格),那么只有 cell(2,3) 显示黑色边框,如上图所示。
    • 感谢您抽出宝贵时间帮助我。但是我的客户的要求不是单元格有黑色边框。要求是单元格内的文字有黑色的轮廓。
    • 我已经用您改进的解释更新了代码。很抱歉造成混乱。
    • 谢谢PeterT,不用道歉,我不会问很多问题,所以如果我的问题从一开始就不清楚,我很抱歉。我已经尝试过该代码并尝试过您的代码,它确实将文本填充设置为黄色,但没有设置轮廓颜色。令人费解的是,它不会抛出错误,但它不起作用。如果我在表格外部的形状中尝试您的代码,它可以工作,但当文本位于表格单元格内时则不行。
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多