Imansible popolare PowerPoint TextBox con valore in cella di Excel utilizzando VBA

È tutto fisso adesso … avevo dimenticato di aver usato una casella di controllo activex non la casella di text "normale" di PPT. Questo è il codice di base corretto per popolare una singola casella di text.

Grazie a David Zemens ho ottenuto alcune iniziative che ho avuto, ma non riesco ancora a raggiungere il mio objective finale. Sentiva che era meglio avviare un nuovo filo, quindi è qui.

La prima cosa che faccio è aprire il file PPT e duplicare la prima diapositiva. Il metodo duplicato stava replicando la diapositiva, ma stava causando altre problematiche, quindi Dave mi trasferisce una soluzione di lavoro in modo che copiamo la diapositiva principale. Di seguito è il codice che ho scritto, che non verrà compilato per il momento. (Anche io ho modificato per scrivere solo in una casella di text piuttosto che utilizzare loop che sarà finalmente fatta una volta che ho un lavoro)

Qualsiasi consiglio sarebbe utile. Fathemes sapere se hai bisogno di informazioni aggiuntive e grazie!

valppt ()

Dim PPT As PowerPoint.Application Dim newslide As PowerPoint.SlideRange 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 = PPT.ActivePresentation.Slides(slideCtr).Duplicate Set tb = newslide.Shapes("TextBox" & slideCtr) slideCtr = slideCtr + 1 Do Until slideCtr > 2 If slideCtr = 2 Then 'tb.TextFrame.TextRange.Characters.Text = Format(ActiveCell.Value, "m/d/yyyy") tb.OLEFormat.Object.Value = Format(ActiveCell.Value, "m/d/yyyy") 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

Questo è il codice corretto.

 Sub valppt() Dim PPT As PowerPoint.Application Dim newslide As PowerPoint.SlideRange 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 = PPT.ActivePresentation.Slides(slideCtr).Duplicate Set tb = newslide.Shapes("TextBox" & slideCtr) slideCtr = slideCtr + 1 Do Until slideCtr > 2 If slideCtr = 2 Then 'tb.TextFrame.TextRange.Characters.Text = Format(ActiveCell.Value, "m/d/yyyy") tb.OLEFormat.Object.Value = Format(ActiveCell.Value, "m/d/yyyy") 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 ActiveCell.Offset (0, 1) .Attiva Sub valppt() Dim PPT As PowerPoint.Application Dim newslide As PowerPoint.SlideRange 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 = PPT.ActivePresentation.Slides(slideCtr).Duplicate Set tb = newslide.Shapes("TextBox" & slideCtr) slideCtr = slideCtr + 1 Do Until slideCtr > 2 If slideCtr = 2 Then 'tb.TextFrame.TextRange.Characters.Text = Format(ActiveCell.Value, "m/d/yyyy") tb.OLEFormat.Object.Value = Format(ActiveCell.Value, "m/d/yyyy") 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