コピー?!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個あっても余裕だね