Excel VBA - PowerPoint 모양을 반복하고 Excel 범위에 없는 텍스트 줄을 식별합니다.

Excel VBA - PowerPoint 모양을 반복하고 Excel 범위에 없는 텍스트 줄을 식별합니다.

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 키를 입력했습니다. 줄 = 줄 바꿈을 입력했거나 줄 바꿈으로 줄이 끊어졌습니다).

관련 정보