title: Find and replace text in Powerpoint 2010 from Excel 2010 with VBA
body: <p>I successfully used this code within a powerpoint odule, but when I move it inside my excel module it gives me several problems. I embedded the Powerpoint application on sheet 1 of Excel. The goal is to generate the powerpoint from excel and replace the company name whenever it appears on a powerpoint slide with the new company name from an excel range.
  I get error 429 ActiveX component cant create object at "For Each osld In ActivePresentation.Slides. Is my Powerpoint presentation not active? Any help would be appreciated. Using excel/Powerpoint 2010.</p>
  
  <pre><code>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 = "&lt;find2&gt;"
   'sSwapme = ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange
   'Call changeme(sFindMe, sSwapme)
  End Sub 
  </code></pre>