「VBA powerpoint 全選択 selectall コピー」
といった検索キーワードでアクセスがありました。
PowerPoint VBAで、Shapes.SelectAllメソッド後に、その選択した図形をコピーするにはどのようなコードを書けばいいのかを探していらしたのでしょうか。
もしかすると、
ActiveWindow.Selection.SlideRange.Shapes.SelectAll.Copy
のようなコードを試してみたものの、
「Functionまたは変数が必要です。」
コンパイルエラーが発生したのかもしれません。
Shapes.SelectAllに戻り値はない
まず「.Shapes.SelectAll.Copy」がエラーになる理由をお伝えします。
Shapes.SelectAllメソッドに戻り値がないからです。
拙著『いちばんやさしいPowerPoint VBAの教本』で解説しているオブジェクトブラウザーを使えば一目瞭然です。
詳細ペインに「Sub SelectAll」と表示されているとおり、Shapes.SelectAllメソッドは戻り値がないタイプのメソッドです。
SelectAllしてCopyするサンプルマクロ
Shapes.SelectAllメソッドに戻り値はないのですから、Shapes.SelectAllメソッドの文と、Copyメソッドを使う文を別にする必要があります。
具体的には、以下のようなPowerPointマクロで、SelectAllしてCopyができます。
ActiveWindow.Selection.SlideRange.Shapes.SelectAll
ActiveWindow.Selection.ShapeRange.Copy
ActivePresentation.Slides.Add Index:=1, Layout:=ppLayoutBlank
ActivePresentation.Slides(1).Select
End Sub
上記のSubプロシージャを実行すると、アクティブなスライドの図形がすべて選択・コピーされてから、先頭に空白の新規スライドが挿入されて、その新規スライドに貼り付けが行われます。
Subプロシージャ内の最初の2行、
ActiveWindow.Selection.SlideRange.Shapes.SelectAll ActiveWindow.Selection.ShapeRange.Copy
が、SelectAll後にCopyしている箇所です。
最終更新日時:2022-03-23 14:09
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » PowerPoint VBAでSelectAllしてCopy