コピー&ペーストするのではなく、一気に複製を行ってくれるDuplicateメソッドを持つオブジェクトが、PowerPointにはいくつかあります。
このDuplicateに関して、
「パワーポイント VBA duplicate 指定したページにコピー」
という検索キーワードでアクセスがありました。
PowerPoint VBAに用意されているDuplicateメソッドを使って、図形を別のスライドに複製するには、どのようなコードを書けばいいのか探していた方による検索でしょうか。
Duplicateメソッドで選択図形を別スライドに複製するサンプル
「パワーポイント VBA duplicate 指定したページにコピー」
とのことですが、ShapeRangeオブジェクトのDupulicateメソッドをオブジェクトブラウザーで調べてみると、詳細ペインに「Function Duplicate()」と表示されているとおり、
Duplicateメソッドは複製先を指定するような引数を指定できるようには作られていません。
結局、以下のSubプロシージャのように、Dupulicateメソッドで複製してから、カット&ペーストする必要があります。
With ActiveWindow.Selection
If .Type <> ppSelectionShapes Then Exit Sub
.ShapeRange.Duplicate.Cut
End With
ActivePresentation.Slides(1).Shapes.Paste
End Sub
いずれかのスライドで、複製したい図形を選択しておいてから上記のSubプロシージャを実行すると、選択されていた図形が、先頭スライドに複製されます。
選択されている図形を、ShapeRange.Duplicateメソッドで複製してから、ShapeRange.Cutメソッドで切り取り、
With ActiveWindow.Selection
.ShapeRange.Duplicate.Cut
ShapeRange.Cutメソッドで切り取り、
.ShapeRange.Duplicate.Cut
Shapes.Pasteメソッドで先頭スライドに貼り付けを行っています。
ActivePresentation.Slides(1).Shapes.Paste
図形が選択されていない場合に実行時エラーを回避するために、図形が選択されていないときにはSubプロシージャを終了する処理を事前に入れています。
With ActiveWindow.Selection
If .Type <> ppSelectionShapes Then Exit Sub
Copyメソッドで選択図形を別スライドに複製するサンプル
結局カット&ペーストするのなら、Duplicateメソッドを使わず最初からCopyメソッドを利用すればイイと私は感じます。
With ActiveWindow.Selection
If .Type <> ppSelectionShapes Then End
.ShapeRange.Copy
End With
ActivePresentation.Slides(1).Shapes.Paste
End Sub
先ほどのSubプロシージャで
.ShapeRange.Duplicate.Cut
となっていた行が、
.ShapeRange.Copy
になっている点だけが異なります。
最終更新日時:2021-09-07 02:51
- Newer:Shapes.Range.Countで図形の個数は取得できない??
- Older:VBAで空白セルの行番号を取得する
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » VBAで図形を別スライドに複製する