Powerpoint2010 で、オブジェクトの枠線変換マクロを実行すると、表(Table)で止まってしまう

Anonymous
2013-09-09T02:15:27+00:00

いつもお世話になっております。

Excel VBAに比べて情報が少ない、Powerpoint2010のマクロについての質問をさせてください。

(大昔BASICの経験があり構造文はまずまず判りますが、 お恥ずかしいことにコマンドの知識が初心者級です)

【現象】

スライド中のオブジェクトの枠線のうち、0.25mm幅をすべて0.75mm幅に変換するため、

マクロを見よう見まねで作成しました。

Sub 枠線0_75mm統一テスト用()

Dim myWindow As Slide

Dim myShape As Shape

For Each myWindow In ActivePresentation.Slides

myWindow.Select

For Each myShape In myWindow.Shapes

myShape.Select

If myShape.Line.Weight = 0.25 Then

MsgBox "枠線を0.75mmに変更します"  'デバッグ用

myShape.Line.Weight = 0.75

myShape.Line.ForeColor.RGB = RGB(255, 0, 255) 'デバッグ用

End If

Next

Next

End Sub

実行すると、Powerpoint2010で作成した(Excel等からの貼り付けでは無い)表のがあるスライドで、

「実行時エラー '2147024809(80070057)':

指定された値は境界を超えています。」

と表示され、

If myShape.Line.Weight = 0.25 Then

で止まってしまいます。

【質問】

表以外のオブジェクトと同様に、 表罫線も、0.25mm幅を0.75mmに変換するには、

表以外のオブジェクトと表を、どのように見分け、

表の場合には、どのようなコマンドを挿入したらよろしいでしょうか?

最悪、表はスキップするだけでも仕方ないかとも思っています。

google および MSDN で、「Powerpoint2010 マクロ 表罫線」で検索しましたが、

また、「PowerPoint 2010 VBA の基礎知識」をざっと見ましたが、

ヒントらしきものも見つかっていません。

以上、ご教示のほど、お願いいたします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
Anonymous
2013-09-09T07:55:03+00:00

こんにちは。

> 表以外のオブジェクトと同様に、 表罫線も、0.25mm幅を0.75mmに変換するには、

> 表以外のオブジェクトと表を、どのように見分け、

> 表の場合には、どのようなコマンドを挿入したらよろしいでしょうか?

指定した図形が表であるかどうかをShapeオブジェクトのHasTableプロパティで判別し、処理を分ければ良いかと思います。

Option Explicit

Public Sub Sample()

  Dim myShape As Shape

  Set myShape = ActivePresentation.Slides(1).Shapes(1)

  If myShape.HasTable Then ChangeTblBordersWeight myShape.Table

End Sub

Private Sub ChangeTblBordersWeight(ByRef tbl As Table)

  Dim r As Long, c As Long

  Dim i As Long

  For r = 1 To tbl.Rows.Count

    For c = 1 To tbl.Columns.Count

      For i = 1 To 6 'ppBorderTop - ppBorderDiagonalUp

        Select Case tbl.Cell(r, c).Borders(i).Weight

          Case 0.25: tbl.Cell(r, c).Borders(i).Weight = 6 '線の太さを6に設定

        End Select

      Next

    Next

  Next

End Sub

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2013-09-09T12:33:30+00:00

    きぬあささん こんばんは。

    迅速かつ、的確なスクリプトをいただきありがとうございました。

    「HasTableプロパティ」はまったく存じ上げませんでした。

    元の私のスクリプトにちょっと修正して入れ込み、無事動作いたしました。

    本当に助かりました。重ね重ね、お礼をいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません