Excel セルの値を取得して、PowerPoint テキスト ボックスに入力しようとしています。スプレッドシートは常に変化しており、値が常に同じ行または同じ順序であるとは限らないため、PowerPoint テーブルを Excel スプレッドシートにリンクしたくありません。
だから私はこのVBAコードを書いて、テキストボックスに入力しようとしています. 私は多くの VBA を行ってきましたが、この組み合わせを試みたことはありません。以下は私がこれまでに持っているものです (追加のテキスト ボックスにはさらに多くのコードが配置されますが、最初に 1 つを機能させる必要があります)。オブジェクトが適切に処理されていないことに問題があることは認識していますが、修正方法がわかりません。
Excel と PowerPoint 2007 を使用しています。太字の部分でエラーが表示されます - 438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。
ありがとう!
Sub valppt()
Dim PPT As PowerPoint.Application
Dim newslide As PowerPoint.Slide
Dim slideCtr As Integer
Dim tb As PowerPoint.Shape
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
PPT.Presentations.Open "C:\Documents\createqchart.pptx"
Range("F2").Activate
slideCtr = 1
Set newslide = ActivePresentation.Slides(slideCtr).Duplicate
Set tb = newslide.Shapes("TextBox1")
slideCtr = slideCtr + 1
' Do Until ActiveCell.Value = ""
Do Until slideCtr > 2
If slideCtr = 2 Then
tb.TextFrame2.TextRange.Characters.Text = ActiveCell.Value
End If
ActiveCell.Offset(0, 1).Activate
slideCtr = slideCtr + 1
If slideCtr = 38 Then
Set newslide = PPT.ActivePresentation.Slides(slideCtr).Duplicate
ActiveCell.Offset(1, -25).Activate
End If
Loop
End Sub
5/17 更新
スライドの複製は機能しますが、テキスト ボックスを評価することはまだできません。テキストボックスに値を割り当てるステートメントの前に、適切な set ステートメントを思いつくことができませんでした。適切なステートメントを取得できていないため、現時点では set ステートメントすらありません。任意の支援をいただければ幸いです。以下が最新のコードです。
Sub shptppt()
'
' shptppt Macro
'
Dim PPT As PowerPoint.Application
Dim pres As PowerPoint.Presentation
Dim newslide As PowerPoint.Slide
Dim slideCtr As Integer
Dim tb As PowerPoint.Shape
Set PPT = CreateObject("PowerPoint.Application")
PPT.Visible = True
Set pres = PPT.Presentations.Open("C:\Documents\createqchart.pptx")
Range("F2").Activate
slideCtr = 1
'Set newslide = ActivePresentation.Slides(slideCtr).Duplicate
' Set tb = newslide.Shapes("TextBox1")
pres.Slides(slideCtr).Copy
pres.Slides.Paste
Set newslide = pres.Slides(pres.Slides.Count)
newslide.MoveTo slideCtr + 1
slideCtr = slideCtr + 1
' Do Until ActiveCell.Value = ""
Do Until slideCtr > 2
If slideCtr = 2 Then
tb.Slides.TextFrame2.TextRange.Characters.Text = ActiveCell.Value
End If
ActiveCell.Offset(0, 1).Activate
slideCtr = slideCtr + 1
If slideCtr = 38 Then
Set newslide = PPT.ActivePresentation.Slides(slideCtr).Duplicate
ActiveCell.Offset(1, -25).Activate
End If
Loop
End Sub