2

PowerPointVBAに関して簡単な質問があります。

オブジェクト(または「フィールド」、私の貧弱な用語でもう一度申し訳ありません)すべてのスライドがありますか?

たとえば、「アクティブな用紙」で選択したオブジェクトを移動する場合は、次のマクロを使用します。

ActiveWindow.Selection.ShapeRange.IncrementLeft 6#

選択したスライドをスライドファイルにコピーする場合は、次のコードを使用します。

ActiveWindow.Selection.Copy ActiveWindow.View.Paste

しかし、どうすればこれら2つのスクリプトを接続できますか?「アクティブな紙」内のオブジェクトを移動し、この「シート」全体をコピーして、スライドフィールドに双子を作成し、双子の紙にジャンプして、そこでオブジェクトを処理するとしますか?

間もなく、VBAで「紙」から「スライド」に切り替えて「紙」に戻すにはどうすればよいですか。

(繰り返しになりますが、ここでひどい用語を使用して申し訳ありません。ここでの意味を理解していただければ幸いです。)

よろしくお願いします。

4

1 に答える 1

2

PowerPointでマクロを記録してコードを調べると、マクロがほぼすべてにSelectionオブジェクトを使用していることがわかります。これは便利な場合がありますが(別のオブジェクトを選択すると、コードが目的の処理を実行する可能性が高くなるため)、次のコードのように、非常に短いマクロ以外の場合は、オブジェクトを直接参照することをお勧めします。 :

Sub Test()

    ' Get the active presentation

    Dim oPresentation As Presentation
    Set oPresentation = ActivePresentation

    ' Get the first slide in the presentation

    Dim oSlide As Slide
    Set oSlide = oPresentation.Slides(1)

    ' Get the first shape on the slide

    Dim oShape As Shape
    Set oShape = oSlide.Shapes(1)

    ' Nudge the shape to the right

    oShape.Left = oShape.Left + 1

    ' Copy the whole slide

    oSlide.Copy

    ' Paste the slide as a new slide at position 2

    Dim oNewSlides As SlideRange
    Set oNewSlides = oPresentation.Slides.Paste(2)

    ' Get a reference to the slide we pasted

    Dim oNewSlide As Slide
    Set oNewSlide = oNewSlides(1)

    ' Get the first shape on the NEW slide

    Dim oNewShape As Shape
    Set oNewShape = oNewSlide.Shapes(1)

    ' Nudge the shape to the right

    oNewShape.Left = oNewShape.Left + 1

End Sub

ほとんどすべてのオブジェクトにSelectメソッドがあることに注意してください。したがって、何かを明示的に選択したい場合は、それが可能です。場合によっては、最初にアクティブなウィンドウのビュータイプを変更する必要があります。たとえば、スライドソータービューでは、スライド上の図形を選択できません。

于 2009-11-09T14:40:42.847 に答える