Получить имя ссылки на объект PPT - VBA - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь получить ссылку на исходный путь для объектов в презентации PowerPoint.

В настоящее время я вручную ввожу путь к исходному файлу листа Excel с помощью FilePath = "C: \ source file.xlsx".

Есть ли способ, которым можно обнаружить путьи хранится в виде строки без жесткого кодирования пути или запроса пользователя ввести его?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

См .:
- Свойство Presentation.Name
- Свойство Presentation.Path

, например:

Sub demo()
    Dim ppPath As String, ppName As String
    ppPath = ActivePresentation.Path
    ppName = ActivePresentation.Name
    If ppPath = "" Then
        MsgBox "File not saved"
    Else
        MsgBox ppName & vbLf & "saved as" & vbLf & ppPath
    End If
End Sub
0 голосов
/ 25 сентября 2018

Решил это.Вот код:

Dim pptSlide As Slide
Dim pptShape As PowerPoint.Shape

For Each pptSlide in pptPresentation.Slides
    For Each pptShape in pptSlide.Shapes
       If pptShape.Type = msoLinkedPicture Or pptShape.Type = msoLinkedOLEObject Then
           Path = pptShape.LinkFormat.SourceFullName
           Position = InStr(1, Path, "!", vbTextCompare)
           FileName = Left(Path, Position - 1)
       End If
   Next pptShape
Next pptSlide

Путь извлекает всю ссылку на объект (включая номер диаграммы и имя листа), Позиция определяет положение!в пути (после которого начинается имя листа).Затем FileName считает символы слева от первого! И сохраняет имя файла в виде строки.

0 голосов
/ 24 сентября 2018

Я использую источник за формой, чтобы получить источник связанного объекта: Shape.LinkFormat.SourceFullName

пример следующего кода, чтобы получить источник за связанными объектами:

Dim sld As PowerPoint.Slide, shp As PowerPoint.Shape, pres As PowerPoint.Presentation

For Each sld In pres.Slides
sld.Select
For Each shp In sld.Shapes
    If shp.Type = msoLinkedOLEObject Then
        ' do something with shp.LinkFormat.SourceFullName

    End If
Next

Далее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...