
コピー?!10個くらいなら人力でも良くない?

でも100個なら自動化したくならない?
例えば同じ図形を100個コピーして並べたい時も、もっと複雑なプログラムもVBAで一気に自動化できちゃいます。
選択中の図形をコピーする方法
いま選択している図形をコピー&ペーストする簡単なVBAをご紹介していきます。
構文
Visio VBAで図形をコピーする構文はこちら。
Copy
Visio VBAで図形を貼り付けする構文はこちら。
PasteToLocation x , y , flg
Sample
選択中の図形をコピーして、貼り付けるサンプルです。
何かしら図形を描いて選択しておいてください。

こんな感じで図形を描いて選択しておきます。
コード
Sub test1()
'今選んでるものをコピーします
ActiveWindow.Selection.Copy
'貼り付けます。
ActiveWindow.Page.PasteToLocation 1, 9, 0
End Sub
選択中の図形をコピーして、X:1、Y:9の位置にコピーした図形を貼り付けます。
※最後の0はフラグですが今回は無視して
実行結果

コピーされました。
位置座標について詳しくはこちら↓↓↓
次は図形を指定してコピーする方法
図形を名前で指定してコピー、貼り付けるサンプルです。
こんな感じで図形を描いておきます。

Sample
Sub test2()
'図形を指定してコピーします
ActiveWindow.Page.Shapes("Sheet.1").Copy
'貼り付けます。
ActiveWindow.Page.PasteToLocation 1, 9, 0
End Sub
Shapes(“Sheet.1”)=名前が”Sheet.1″の図形をコピーし、貼り付けます。
実行結果

コピーされました。
For文で複数個コピーしてみた
Sample
次は選択中の図形をコピーし、For文で横並びに10個複製する方法です。
こんな感じで図形を描いておきます。

コード
Sub test3()
Dim Px, Py
Px = 1
Py = 9
'今選んでるものをコピーします
ActiveWindow.Selection.Copy
For i = 0 To 9 Step 1
'貼り付けます。
ActiveWindow.Page.PasteToLocation Px, Py, 0
'貼り終わったら0.7インチ右にずらす。
Px = Px + 0.7
Next
End Sub
for文で10個、位置を横に0.7インチずつずらして貼り付けてみました。
実行結果

10個できました。

こんなのあったら嬉しい場面って結構あるかも

100個あっても余裕だね


