1

コードで "Object variable or With block variable not set"エラーが発生します。これは、マクロを書く私の最初のクラックです。私はプログラミングの知識はありますが、これは私にとって新しいことです。

とにかく、プレゼンテーションを確認したいのですが、メモ セクションにテキストがあるすべてのページについて、そのテキストを含む新しいスライドを (その後に) 追加したいと考えています。

これが私が試したことです:

Sub SlideSort()
Dim curSlide As Slide
Dim newSld As Slide
Dim curPres As Presentation
Dim curShape As Shape
Dim i As Integer

    For i = 1 To ActivePresentation.Slides.Count
        curSlide = ActivePresentation.Slides(i)

        For Each curShape In curSlide.NotesPage.Shapes
            If curShape.Type = msoPlaceholder Then
                If curShape.PlaceholderFormat.Type = ppPlaceholderBody Then
                    If curShape.TextFrame.TextRange <> "" Then
                        Set newSld = ActivePresentation.Slides.Add(Index:=i + 1, Layout:=ppLayoutText)
                        newSld.Shapes(2).TextFrame.TextRange = curShape.TextFrame.TextRange
                        i = i + 1

                    End If
                End If
            End If
        Next curShape
    Next i

End Sub

エラーを与える行は curSlide = ActivePresentation.Slides(i) です

4

3 に答える 3

3

使用Set curSlide = ActivePresentation.Slides(i)-オブジェクトであり、 経由で操作する必要がありますSet

于 2013-02-26T18:35:44.177 に答える
1

他のオブジェクトと同様に、ここで Set を使用する必要があります。

Set curSlide = ActivePresentation.Slides(i)
于 2013-02-26T18:35:14.623 に答える
0

ビンゴ。Mac 版 PowerPoint のバグです。Macで問題を再現できます。

.PlaceholderFormat.Type は Mac PowerPoint ではサポートされていませんが、サポートされているはずです。

100% 信頼できるわけではありませんが、代わりにノート ページの 2 番目の図形を本文テキストのプレースホルダーとして選択できます。

Sub SlideSort()
Dim curSlide As Slide
Dim newSld As Slide
Dim curPres As Presentation
Dim curShape As Shape
Dim i As Integer

    For i = 1 To ActivePresentation.Slides.Count
        curSlide = ActivePresentation.Slides(i)
        curShape = curSlide.NotesPage.Shapes(2)
           If curShape.TextFrame.TextRange <> "" Then
              Set newSld = ActivePresentation.Slides.Add(Index:=i + 1, Layout:=ppLayoutText)
              newSld.Shapes(2).TextFrame.TextRange = curShape.TextFrame.TextRange
              i = i + 1
           End If
    Next i

End Sub

ループ内で Slide.Count を見ているため、問題が発生する可能性があると思いますが、スライドを追加することで、Slide.Count を変更しています。

于 2013-02-27T15:47:44.630 に答える