Ich schreibe ein Makro, um festzustellen, ob die Textzeilen in einer PowerPoint-Form nicht in einem Excel-Bereich vorhanden sind.
Die Idee der letzten Schleife ist, dass die Textzeile in der Form, wenn sie nicht im Excel-Bereich gefunden wird, aufgezeichnet wird. Es funktioniert nicht, da der Code alle Zeilen in der Form zurückgibt, was bedeutet, dass keine gefunden wurde, und wenn ich eine Not
Bedingung, es werden keine Zeilen zurückgegeben, auch nicht diejenigen, die nicht im Excel-Bereich liegen.
Irgendwelche Ideen?
Hier ist mein Code:
Sub Updt_OrgChart_Test1()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Set PPApp = CreateObject("Powerpoint.Application")
PPApp.Visible = True
Set PPPres = PPApp.Presentations("presentation 2016.pptx")
Set PPSlide = PPPres.Slides(6)
Dim wb As Workbook
Dim teste_ws As Worksheet
Dim SDA_ws As Worksheet
Set wb = ThisWorkbook
Set teste_ws = wb.Sheets("Teste")
Set SDA_ws = wb.Sheets("FZ SW KRK SDA")
Dim shp As PowerPoint.Shape
Dim L5AndTeam As String
L5AndTeam = SDA_ws.Range("C3")
Dim Employee_Rng As Range
Set Employee_Rng = SDA_ws.Range(Range("B8"), Range("B8").End(xlDown))
For Each shp In PPSlide.Shapes
On Error Resume Next
If shp.TextFrame.HasText Then
If shp.TextFrame.TextRange.Lines.Count > 2 Then
If Left(shp.Name, 3) = "Rec" Then
Dim prg As PowerPoint.TextRange
For Each prg In shp.TextFrame.TextRange.Paragraphs
Dim nm As String
nm = prg
If Employee_Rng.Find(nm.Value) Is Nothing Then
MsgBox nm <---- this is just a test, will add more code here
End If
Next prg
End If
End If
End If
Next shp
End Sub
microsoft-excel
vba
automation
microsoft-powerpoint
sptfire101
quelle
quelle
On Error Resume Next
Sie haben eventuell vorhandene Fehler maskiert. Haben Sie versucht, durchzugehen und zu überprüfen, welche Werte in jeder Iteration gefunden werden?Employee_Rng.Find(nm.Value)
Paragraphs
Methode gibt a zurücktextrange
Eine schnelle Dokumentprüfung zeigt, dass es für a keine "value" -Eigenschaft gibttextrange
Objekt. Ist ".value" gültig? Resume-next würde direkt darüber springen. Sie gehen auch davon aus, dass es sich um einen Volltext handelt, der keine Leerzeichen usw. enthält. Ist das eine gültige Annahme?Antworten:
Möglicherweise ist es besser, wenn Sie die Sammlung "Absätze" oder "Zeilen" des TextRange der Form durchlaufen. Ein einfaches Beispiel, das ein ausgewähltes Textfeld voraussetzt:
Beachten Sie, dass Sie Absätze oder Zeilen schrittweise durchlaufen können (Absatz = Sie haben am Ende eine EINGABETASTE eingegeben; Zeile = Sie haben einen Zeilenumbruch eingegeben oder die Zeile wurde durch Zeilenumbruch unterbrochen)
quelle