我成功地在PowerPoint模塊中使用了該代碼,但是當我將其移動到我的Excel模塊中時,它給了我幾個問題。我將PowerPoint應用程序嵌入到Excel表格1中。我們的目標是從excel中生成powerpoint,並且在出現在powerpoint幻燈片上時用公司名稱出現在excel範圍內的公司名稱替換公司名稱。 我得到錯誤429 ActiveX組件不能在創建對象「對於每個osld在ActivePresentation.Slides。是我的簡報不積極?任何幫助,將不勝感激。使用Excel/PowerPoint 2010中使用VBA在Excel 2010中查找並替換Powerpoint 2010中的文本
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
您的ppt在Excel中不是主動** ** - 當您引用ActivePresentation時,您需要包含'ppApp'參考:即。 'ppApp.ActivePresentation.Slides' – 2012-03-21 20:34:42