设置PowerPoint表的默认字体

时间:2012-12-06 04:48:06

标签: c# powerpoint office-interop powerpoint-vba

我可以创建包含许多单元格的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;
    
  4. 我正在使用C#通过其COM API控制PowerPoint 2003..2010。我的实验是使用PowerPoint 2003进行的。

1 个答案:

答案 0 :(得分: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

用这个“预处理”形状,做任何必要的事情,然后用一个伴侣程序“取消对待”它,测试文本是否为“!@#$%”并将其设置回“”如果是这样的话,请不要这样做。