2016-04-21 3 views
0

diesen Teil meines Codes bekommen sollte Text in Powerpoint-Formen und ersetzen Sie es mit Text aus einer Zelle in Excel finden:Suchen Text in Powerpoint zu finden und mit Hilfe von Text aus einer Zelle in Excel ersetzen VBA, aber halten Sie Fehler

Dim oSld As Slide 
Dim oShp As Shape 
Dim oTxtRng As TextRange 
Dim oTmpRng As TextRange 
Dim strWhatReplace As String, strReplaceText As String 

' write find text 
strWhatReplace = "xxxxx" 
' write change text 
strReplaceText = Sheet13.Range("C1").Value 


     ' go during each slides 
For Each oSld In ppPres.Slides 
    ' go during each shapes and textRanges 
    For Each oShp In oSld.Shapes 
     ' replace in TextFrame 
     Set oTxtRng = oShp.TextFrame.TextRange 
     Set oTmpRng = oTxtRng.replace(_ 
     FindWhat:=strWhatReplace, _ 
     Replacewhat:=strReplaceText, _ 
     WholeWords:=True) 

      Do While Not oTmpRng Is Nothing 
      Set oTxtRng = oTxtRng.Characters _ 
      (oTmpRng.Start + oTmpRng.Length, oTxtRng.Length) 
      Set oTmpRng = oTxtRng.replace(_ 
      FindWhat:=strWhatReplace, _ 
      Replacewhat:=strReplaceText, _ 
      WholeWords:=True) 
     Loop 
    Next oShp 
Next oSld 

ich erhalte Laufzeitfehler 13 Typenkonflikt - die Debug-Highlights ‚For Each OSHP In oSld.Shapes‘ nicht sicher, wohin ich gehe falsch

Antwort

0

Wenn Sie Verweise auf Microsoft Excel und Microsoft PowerPoint-Objektbibliothek haben, dann gibt es zwei Arten von s.

Scheint, Sie haben Excel.Shape dimensioniert, aber dann erhalten Sie PowerPoint.Shape.

Versuchen Sie Dim oShp As PowerPoint.Shape.

+0

Ich versuchte Dim OShp als PowerPoint.shape, aber jetzt ist mein Fehler 'der angegebene Wert ist außerhalb des Bereichs' markiert in der Zeile Set oTxtRng = oShp.TextFrame.TextRange – chandu

+0

Vielleicht hat die 'PowerPoint.Shape' keinen' TextFrame'? Siehe: https://msdn.microsoft.com/en-us/library/office/ff743875.aspx. –

+0

Vielleicht, wie bekomme ich es, Text in irgendeiner Form im PowerPoint zu suchen und dann zu ersetzen, was ich will? – chandu

0

das bedeutet VBA meint, dass der Variablentyp von OSHP ist nicht Dasselbe wie der von oSld.Shapes zurückgegebene Typ. Der Code sieht für mich ok, aber man könnte dies in dem Direkt-Fenster zu überprüfen geben, wenn der Code an diesem Punkt stoppt:

?TypeName(oShp) 
?TypeName(oSld.Shapes) 

Sie, dass man sehen sollte nicht vom Typ Shape ist (obwohl ich nicht sehen kann wie beim Lesen deines Codes).

Wo wird ppPres deklariert und gesetzt? Ist das vom Typ Präsentation?

+0

ppPres wird früher im Code deklariert und ist eine Präsentation. Ich habe versucht Dim OShp als PowerPoint.shape, aber jetzt ist mein Fehler 'der angegebene Wert ist außerhalb des Bereichs' markiert in der Zeile Set oTxtRng = oShp.TextFrame.TextRange – chandu

+0

Einige Formen (Linien, Pfeile, Smartart, Gruppen) nicht eine TextRange-Eigenschaft haben; versuchen Sie, diese Zeile innerhalb eines If oShp.HasTextFrame/End Wenn Block –

Verwandte Themen