0

多くのセルを含む PowerPoint の表を作成できますが、既定のフォント (28 ポイント) が大きすぎます。ユーザーの PowerPoint テンプレートにアクセスできない場合、作成した表のフォントを設定するにはどうすればよいですか? 現時点でできることは次のとおりです。

  1. テーブルを作成します。
  2. それ以外の場合、フォントの変更は無視されるため (ただし、PowerPoint UI を使用して動作します)、すべてのセルに 1 つのスペースを入力します。
  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

これで形状を「前処理」し、必要なことは何でもしてから、テキスト = "!@#$%" かどうかをテストし、そうであれば "" に戻すコンパニオン ルーチンでそれを「処理解除」します。それ以外の場合はそのままにしておきます。

于 2012-12-07T04:04:25.457 に答える