Pomyślnie użyłem tego kodu w odium powerpoint, ale kiedy go przeniesiemy do modułu excel, pojawi się kilka problemów. Umieściłem aplikację Powerpoint na arkuszu 1 programu Excel. Celem jest wygenerowanie powerpointa z programu Excel i zastąpienie nazwy firmy, ilekroć pojawi się na slajdzie PowerPoint, z nową nazwą firmy z zakresu excel. dostaję błąd 429 ActiveX cant utworzyć obiektu na „For Each osld W ActivePresentation.Slides. Czy moja prezentacja Powerpoint nie aktywny? Każda pomoc będzie mile widziane. Za pomocą programu Excel/PowerPoint 2010.Znajdź i zamień tekst w programie Powerpoint 2010 z programu Excel 2010 za pomocą VBA
Sub changeme(sFindMe As String, sSwapme As String)
Dim osld As Slide
Dim oshp As Shape
Dim otemp As TextRange
Dim otext As TextRange
Dim Inewstart As Integer
For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
If oshp.HasTextFrame Then
If oshp.TextFrame.HasText Then
Set otext = oshp.TextFrame.TextRange
Set otemp = otext.Replace(sFindMe, sSwapme, , msoFalse, msoFalse)
Do While Not otemp Is Nothing
Inewstart = otemp.Start + otemp.Length
Set otemp = otext.Replace(sFindMe, sSwapme, Inewstart, msoFalse, msoFalse)
Loop
End If
End If
Next oshp
Next osld
End Sub
'-------------------------------------------------------------------------
Sub swap()
Dim sFindMe As String
Dim sSwapme As String
Dim ppApp As PowerPoint.Application
Dim ppPreso As PowerPoint.Presentation
'Start Powerpoint
'Look for existing instance
On Error Resume Next
Set ppApp = GetObject(, "PowerPoint.Application")
On Error Goto 0
'Create new instance if no instance exists
Set ppApp = CreateObject("Powerpoint.Application")
'Open Template in word
With Sheets("Sheet1").Shapes("Object 1").OLEFormat.Verb(Verb:=xlVerbOpen)
End With
'Make it visible
ppApp.Visible = True
sFindMe = "Name To Find"
'change this to suit
sSwapme = "New Name"
Call changeme(sFindMe, sSwapme)
'sFindMe = "<find2>"
'sSwapme = ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange
'Call changeme(sFindMe, sSwapme)
End Sub
Twój ppt nie jest aktywny ** w Excelu ** - powinieneś uwzględnić odniesienie 'ppApp', gdy odwołasz się do ActivePresentation: ie. 'ppApp.ActivePresentation.Slides' –