質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

3187閲覧

【VBA】POWERPOINTマクロで表全体を選択し格子状の罫線を引く方法

tanaka1202

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/06/16 06:23

###前提・実現したいこと
POWERPOINTマクロで表全体を選択し格子状の罫線を引きたい。
動きの流れは表の中身を全選択→格子状の罫線を引くとなる想定です。
###発生している問題・エラーメッセージ

ExcelのRangeオブジェクトのようにCurrentRegionプロパティが見当たらず、
BorderにLineStyleも見当たらないため思うような動作を実現できない。

###該当のソースコード

vba

1Presentation.Slides.Item(1).Shapes.Item(1).Table.Rows(1).Cells.Boders(ppBorderTop).Visible = msoTrue

まだ不勉強ですが、ご教授のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

tanaka1202

総合スコア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
momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

罫線を引く
.Borders(ppBorderTop).DashStyle = msoLineSolid

罫線を表示
.Borders(ppBorderTop).Visible = msoTrue

罫線の色
.Borders(ppBorderTop).ForeColor.RGB = RGB(255, 0, )

罫線の太さ
.Borders(ppBorderTop).Weight = 5

投稿2017/06/16 08:15

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問