Этот код, чтобы найти и заменить список текста для проверки качестваPower Point Macro: Run ошибка времени 9
sub FindAndReplace()
Dim Pres As Presentation
Dim sld As Slide
Dim shp As Shape
For Each Pres In Application.Presentations
For Each sld In Pres.Slides
For Each shp In sld.Shapes
Call checklist(shp)
Next shp
Next sld
Next Pres
MsgBox "Completed Succesfully!"
End Sub
Sub checklist(shp As Object)
Dim txtRng As TextRange
Dim rngFound As TextRange
Dim I, K, X As Long
Dim iRows As Integer
Dim iCols As Integer
Dim TargetList, DestinationList
TargetList = Array(" ", " ", " ", " ", " ", " ", " ", "/", "i.e. ", "e.g. ", "/ ", " /", " :", " ;", " .", " ,", " - ", "resume", "a.m.", "p.m.", ":00")
DestinationList = Array(" ", " ", " ", " ", " ", " ", " ", "/", "i.e., ", "e.g., ", "/", "/", ":", ";", ".", ",", " – ", "résumé", "am", "")
With shp
If shp.HasTable Then
For iRows = 1 To shp.Table.Rows.Count
For iCols = 1 To shp.Table.Rows(iRows).Cells.Count
Set txtRng = shp.Table.Rows(iRows).Cells(iCols).Shape.TextFrame.TextRange
For I = 0 To UBound(TargetList)
Set rngFound = txtRng.Replace(TargetList(I), DestinationList(I))
Do While Not rngFound Is Nothing
Set rngFound = txtRng.Replace(TargetList(I), DestinationList(I), After:=rngFound.Start + rngFound.Length, wholewords:=True)
Loop
Next
Next
Next
End If
End With
Select Case shp.Type
Case msoGroup
For X = 1 To shp.GroupItems.Count
Call checklist(shp.GroupItems(X))
Next X
Case 21
For X = 1 To shp.Diagram.Nodes.Count
Call checklist(shp.GroupItems(X))
Next X
Case Else
If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
Set txtRng = shp.TextFrame.TextRange
For I = 0 To UBound(TargetList)
Set rngFound = txtRng.Replace(TargetList(I), DestinationList(I))
Do While Not rngFound Is Nothing
Set rngFound = txtRng.Replace(TargetList(I), DestinationList(I), After:=rngFound.Start + rngFound.Length, wholewords:=True)
Loop
Next
End If
End If
End Select
End Sub
Я получаю во время выполнения 9 об ошибке для этого кода.
Также этот код заменяет только первое вхождение определенных слов типа "i.e." и "eg :, но я хочу заменить все вхождения.
Мои искренние благодарности :) Код работал ... –
Но я все еще не мог понять основную причину ошибки. Я столкнулся с той же ошибкой для кода ниже, но сначала он работал нормально. Но позже, когда я сотрудничать со всеми модулями для создания надстройки. показывая ту же ошибку, что и выше. «Ошибка времени выполнения 9» –
Основной причиной ошибки является то, что у вас было 21 аргумент в массиве TargetList и 20 в DestinationList, поэтому, когда вы использовали UBound массива TargetList в своем цикле и достигли 21-го аргумента, он не прошел найти соответствующий 21-й элемент в массиве DestinationList. –