図形をコピーする方法

VBA

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

タイトルとURLをコピーしました