1

如果形状是某些连接器的 EndConnectedShape(连接器是根据 .txt 文件中的某些数据选择的,但数据输入部分工作正常),我需要根据条件更改幻灯片中某些形状的颜色。

尽管它必须简单明了,但我尝试按名称获取形状的部分仍然无法正常工作:

Sub test()
    Dim oFSO As FileSystemObject
    Set oFSO = New FileSystemObject

    Dim oFS As TextStream
    Dim i, j As Long

    Dim filePath, smth As String
    filePath = "C:\MyPath\MyFile.txt"

    If oFSO.FileExists(filePath) Then

        On Error GoTo Err

        Set oFS = oFSO.OpenTextFile(filePath)
        For i = 1 To 1
            smth = VecNames(j)  ' ADDED
            wholeLine1 = oFS.ReadLine
            VecNames = Split(wholeLine1, ",")

            wholeLine2 = oFS.ReadLine
            VecSIs = Split(wholeLine2, ",")


            For j = 1 To UBound(VecNames)
                With ActivePresentation.Slides(i)
                    For Each oSh In ActivePresentation.Slides(i).Shapes
                        If oSh.Connector And oSh.Name = smth Then
                            'Degub.Print oSh.Name

                            oSh.Line.ForeColor.RGB = RGB(255, 0, 0)
                            oSh.Line.Weight = VecSIs(j) * 5
                            strShNm = oSh.ConnectorFormat.EndConnectedShape.Name

                            ' NEXT LINE IS NOT WORKING :
                            mySh = ActivePresentation.Slides(i).Shapes(strShNm)
                            ' When tried to change the line above to the one below which is commented out, it DOESN'T work either:
                            ' mySh = Selection.ShapeRange(strShNm)
                            With mySh
                                mySh.Line.ForeColor.RGB = RGB(255, 0, 0)
                            End With

                        ElseIf oSh.Type = msoTextBox Then
                            If mySh.TextFrame.TextRange.Text = VecNames(j) Then
                                oSh.TextFrame.TextRange.Font.Color = RGB(255, 0, 0)
                            End If
                        End If
                    Next oSh
                End With
            Next j
        Next i
        oFS.Close
    Else
        MsgBox "The file path is invalid.", vbCritical, vbNullString
        Exit Sub
    End If
    Exit Sub

    Err:
        MsgBox "Error while reading the file.", vbCritical, vbNullString
        oFS.Close
        Exit Sub
End Sub

知道我在做什么错吗?谢谢!

4

1 回答 1

0

在这段代码中:

strShNm = oSh.ConnectorFormat.EndConnectedShape.Name
mySh = ActivePresentation.Slides(i).Shapes(strShNm)

您从形状中获取名称,然后尝试从名称中获取形状......

更容易做到这一点(不要忘记使用Set):

Set mySh =  oSh.ConnectorFormat.EndConnectedShape
于 2014-02-28T17:26:47.893 回答