PowerPoint 도형의 텍스트 줄이 Excel 범위에 없는지 확인하기 위해 매크로를 작성 중입니다.
마지막 루프의 아이디어는 도형의 텍스트 줄이 Excel 범위에서 발견되지 않으면 기록된다는 것입니다. 코드가 모양의 모든 줄을 반환하므로 아무 것도 발견되지 않았으며 Not
조건을 추가하면 Excel 범위에 없는 줄도 반환하지 않으므로 작동하지 않습니다 .
어떤 아이디어가 있나요?
내 코드는 다음과 같습니다.
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
답변1
도형 TextRange의 Paragraphs 또는 Lines 컬렉션을 반복하는 것이 더 나을 수도 있습니다. 선택된 텍스트 상자를 가정하는 간단한 예:
Sub Thing()
Dim oSh As Shape
Dim x As Long
Set oSh = ActiveWindow.Selection.ShapeRange(1)
If oSh.HasTextFrame Then
With oSh.TextFrame.TextRange
For x = 1 To .Paragraphs.Count
Debug.Print .Paragraphs(x).Text
Next
For x = 1 To .Lines.Count
Debug.Print .Lines(x).Text
Next
End With
End If
End Sub
단락이나 줄을 단계별로 이동할 수 있습니다(단락 = 끝에 Enter 키를 입력했습니다. 줄 = 줄 바꿈을 입력했거나 줄 바꿈으로 줄이 끊어졌습니다).