0

我可以创建包含许多单元格的 PowerPoint 表格,但默认字体(28 磅)太大。如果无法访问用户的 PowerPoint 模板,如何为我创建的表格设置字体?目前我能做的只有:

  1. 创建表。
  2. 用一个空格填充每个单元格,否则会忽略字体更改(尽管它可以使用 PowerPoint UI)。
  3. 创建一个包含所有单元格的范围并设置字体:

    List<string> names = new List<string>();
    foreach (PowerPoint.Column column in table.Columns)
        foreach (PowerPoint.Cell cell in column.Cells) {
            cell.Shape.TextFrame.TextRange.Text = "";
            names.Add(cell.Shape.Name);
        }
    PowerPoint.ShapeRange range = ppt.ActivePresentation.Slides.Item(1).Shapes.Range(names.ToArray());
    range.TextFrame.TextRange.Font.Size = 12;
    

我正在使用 C# 通过其 COM API 控制 PowerPoint 2003..2010。我的实验是使用 PowerPoint 2003。

4

1 回答 1

1

在 PPT 2010 中,这无需在单元格中输入文本即可工作(vba,但应该很容易翻译)。出于演示目的,我正在使用当前选择的表;将对该表的任何其他引用替换为 oTbl:

Dim oTbl As Table
Dim lCol As Long
Dim lRow As Long


Set oTbl = ActiveWindow.Selection.ShapeRange(1).Table

With oTbl
    For lCol = 1 To .Columns.Count
        For lRow = 1 To .Rows.Count
            .Cell(lRow, lCol).Shape.TextFrame.TextRange.Font.Size = 28
        Next
    Next
End With

如您所见,在 PPT2003 中,您需要将文本添加到单元格中以“采用”格式(不幸的是,这严重减慢了速度)。

因为在 PPT 自动化中还有其他实例,您可能需要临时填写文本然后将其删除,您可能想要编写一个更通用的例程,您可以将形状传递给该例程。

With Shape.TextFrame.TextRange
  If Len(.Text) = 0 Then
    .Text = "!@#$%" ' or some other lunatic string not likely to be found in nature
  End If
End With

用这个“预处理”这个形状,做任何必要的事情,然后用一个伴随例程“取消处理”它,测试是否 text = "!@#$%" 并将其设置回 "" 如果是,否则别管它。

于 2012-12-07T04:04:25.457 回答