###前提・実現したいこと
POWERPOINTマクロで表全体を選択し格子状の罫線を引きたい。
動きの流れは表の中身を全選択→格子状の罫線を引くとなる想定です。
###発生している問題・エラーメッセージ
ExcelのRangeオブジェクトのようにCurrentRegionプロパティが見当たらず、
BorderにLineStyleも見当たらないため思うような動作を実現できない。
###該当のソースコード
vba
1Presentation.Slides.Item(1).Shapes.Item(1).Table.Rows(1).Cells.Boders(ppBorderTop).Visible = msoTrue
まだ不勉強ですが、ご教授のほどよろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
自己解決
解決しました。
セルの罫線を一本ずつ引くのはcoco_bauer様の回答でよいのですが、
表全体に対して格子状の罫線を引く場合はTableオブジェクトのApplyStyleを変更すれば可能でした。
lang
1Presentation.Slides.Item(1).Shapes.Item(1).Table.ApplyStyle "{5940675A-B579-460E-94D1-54222C63F5DA}"
と記述することで表のスタイルを格子状の罫線ありのスタイルに変更できます。
以下、参考WebサイトのURLです。
ご回答ありがとうございました。
投稿2017/06/19 00:04
総合スコア14
0
面白そうなのでチャレンジしました。
動きの流れは表の中身を全選択→格子状の罫線を引くとなる想定です。
表の中身を全選択までは以下でできたのですが、選択したセルの取得方法が、わからず・・・
ActivePresentation.Slides.Item(1).Shapes.Item(1).Table.Cell(1, 1).Select SendKeys "^(a)"
結局、テーブルのセル全部操作するしか。。。。
※ ほぼ、coco_bauerさんと同じですが・・・
Dim oTbl As Table Dim oCell As Cell Set oTbl = ActiveWindow.Selection.ShapeRange(1).Table For i = 1 To oTbl.Rows.Count For j = 1 To oTbl.Columns.Count Set oCell = oTbl.Cell(i, j) oCell.Borders(ppBorderLeft).InsetPen = msoTrue oCell.Borders(ppBorderRight).InsetPen = msoTrue oCell.Borders(ppBorderTop).InsetPen = msoTrue oCell.Borders(ppBorderBottom).InsetPen = msoTrue Next Next
if oCell.Selected
をかませると、選択したセルだけ線を引くが実現できます。
投稿2017/06/17 01:45
編集2017/06/17 01:50総合スコア4828
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Excel VBAのRangeオブジェクトに相当するのは、PowerPoint VBA(以下ppVBAと略します)のCellオブジェクトとCellRangeオブジェクトです。Cellはテーブルの中の1つの枠、CellRangeはCellのコレクションです。
質問にあるコードの以下の部分
Presentation.Slides.Item(1).Shapes.Item(1).Table.Rows(1).Cells
は、1枚目のスライド(Slides.Item(1))の、1つ目のアイテムの表(Shapes.Item(1).Table)の、1行目(Rows(1))のセル全部から成るCellRangeになります。
Cellの6つのBorder(上辺、下辺、右辺、左辺、右下がり対角線、右上がり対角線)は、BordersプロパティのppBorderTop、ppBorderBottom、ppBorderRight、ppBorderLeft、ppBorderDiagonalDown、ppBorderDiagonalUpで指示します。
そしてLineStyleに相当するのは、BorderのDashStyleプロパティで、これにmsoLineDash(破線)などの線の種類を設定します。
表全体に枠を書くコードは、以下のような感じになるはずです(テストはしていないので、多少の修正が必要かもしれません)
Dim HyouZentai as CellRange ' 表の全てのセルをHyouZentai(”表全体”のつもり)というCellRangeオブジェクトの変数に代入 set HyouZentai = Presentation.Slides.Item(1).Shapes.Item(1).Table.Cells with HyouZentai .Borders(ppBorderTop).DashStyle=msoLineSolid '上辺を実線に .Borders(ppBorderBottom).DashStyle=msoLineSolid '下辺を実線 .Borders(ppBorderRight).DashStyle=msoLineSolid '右辺を実線 .Borders(ppBorderLeft).DashStyle=msoLineSolid '左辺を実線 End with
投稿2017/06/16 08:19
総合スコア6919
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。