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

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

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

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

Q&A

解決済

1回答

8293閲覧

【VBA】PowerPointマクロでカギ線コネクタの頂点を指定(変更)する方法

tanaka1202

総合スコア14

VBA

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

0グッド

0クリップ

投稿2017/10/10 11:57

###前提・実現したいこと
PowerPointマクロで下記のような形のカギ線コネクタを描画したい
|_

###発生している問題・エラーメッセージ
VBAでカギ線コネクタの頂点(図形をクリックすると黄色い菱形で表示されているもの)をどう指定するのか分からず、
下記のようなカギ線コネクタしか描画できない
 ̄|_

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

VBA

1Call ActivePresentation.Slides(1).Shapes.AddConnector(msoConnectorElbow, 0, 0, 100, 100)

###試したこと
ConnectorFormatオブジェクトのメンバーを調べましたが、それらしいプロパティは見当たらなかったです

###補足情報(言語/FW/ツール等のバージョンなど)
powerpoint 2010

ご教授よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

記載いただいたコネクタ形状は、始点の向きが異なりますよね。

コネクタの始点・終点を定めていない(どこにも接続していない)ときは現状のようなクランク型をしていると思います。
始点・終点を他のオブジェクトに接続することで、オブジェクトの位置関係によってはL型のコネクタになります。

黄色い菱型で

黄色い菱型の部分というのは、カギ線コネクタの折れるを位置を調整するものを指していると思いますが、VBAでこれを制御するのはShape.Adjustmentsです。
カギ線コネクタにはアジャスタは1つしかないので、Shape.Adjustments.Item(1)の値を指定します。
詳しい資料がみつからなかったので推測になりますが、値の範囲は0~1で指定するようで、おそらく線の長さに対する折れる位置を調整するものと思います。

両端が接続されていないコネクタであれば、Shape.Adjustments.Item(1)=0またはShape.Adjustments.Item(1)=1のように極地に設定することで擬似的に角がひとつしかないL型のコネクタを表現できます。
ただ、接点を移動してしまうとまたクランク型に戻ってしまいますのでご注意ください。

別案

コネクタの両端をで他のオブジェクトに接続することで、L型コネクタにすることもできます。
例えば2つの四角オブジェクトを用意し、始点を1つ目のオブジェクトの下端に、終点を2つ目のオブジェクトの左端に接続することで、位置関係によってL型のコネクタになります。

私がL型コネクタを表現する時は、小さな非表示オブジェクト2つ作成し、コネクタの始点・終点をこれに接続することが多いです。

サンプル

以下は上記2つの方法でL型コネクタを表現するVBAサンプルです。

Sub Test() Dim myDoc As Slide Set myDoc = ActivePresentation.Slides(1) '■隠しオブジェクトを使ったL型コネクタ■(サイズや形状の調整は隠しオブジェクトを移動して行います) Dim shpBox1 As Shape Dim shpBox2 As Shape Dim shpCon As Shape Set shpBox1 = myDoc.Shapes.AddShape(msoShapeRectangle, 10, 10, 10, 10) Set shpBox2 = myDoc.Shapes.AddShape(msoShapeRectangle, 10, 10, 10, 10) Set shpCon = myDoc.Shapes.AddConnector(msoConnectorElbow, 10, 10, 10, 10) shpCon.Line.ForeColor.RGB = RGB(255, 0, 0) '赤線 '隠しオブジェクトを非表示 shpBox1.Visible = msoFalse shpBox2.Visible = msoFalse '隠しオブジェクトにコネクタ接続 shpCon.ConnectorFormat.BeginConnect shpBox1, 3 shpCon.ConnectorFormat.EndConnect shpBox2, 2 '隠しオブジェクトの位置で形状を調整 shpBox1.Left = 10 shpBox1.Top = 10 shpBox2.Left = 60 shpBox2.Top = 60 '■擬似的なL型コネクタ■(始点/終点を移動するとクランク型になります) Dim shpCon2 As Shape Set shpCon2 = myDoc.Shapes.AddConnector(msoConnectorElbow, 100, 100, 150, 150) shpCon2.Line.ForeColor.RGB = RGB(0, 0, 255) '青線 '調整 shpCon2.Adjustments(1) = 0 Dim shpCon3 As Shape Set shpCon3 = myDoc.Shapes.AddConnector(msoConnectorElbow, 200, 200, 250, 250) shpCon3.Adjustments(1) = 1 '調整 shpCon3.Line.ForeColor.RGB = RGB(0, 255, 0) '緑線 End Sub

参考になれば幸いです。

投稿2017/10/11 02:03

jawa

総合スコア3013

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

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

tanaka1202

2017/10/11 02:50

ありがとうございます。 `Shape.Adjustments`がまさしく探していたプロパティでした。 おかげさまで解決しました。
jawa

2017/10/11 02:58

無事解決したようでなによりです。 実は今回、PowerPointでの質問ではありましたが、私が.Adjustmentsプロパティを見つけたのはExcelVBAでした。 ExcelVBAにはマクロの自動記録がありますので、コネクタオブジェクトの黄色い菱型を動かす操作を記録して.Adjustmentsにたどり着きました。 ExcelVBAの環境があり、今回のようなExcelでも似たようなことができるもの、という条件ではありますが、今後の問題解決の参考になれば幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問