Word VBA Макросы: Как обратиться к открытому несохранённому документу

Автор siv14, 14 сентября 2017, 10:24

siv14

Добрый день. Как обратиться к открытому документу? Этот документ не сохранён на жёстком диске.

Администратор

Вообще, принцип такой для поиска открытого файла:
Макрос
Sub макрос()

    Dim DocNew As Document
   
    ' Цикл по всем открытым файлам.
    For Each DocNew In Documents
        ' Если это нужный файл, то выход из цикла, а файлу будет присвоено имя "DocNew".
        ' Если нужного файла нет, то в переменной "DocNew" будет "Nothing".
    Next DocNew

End Sub
[свернуть]

Если известно имя файла, то можно обратиться по имени. Только нужно указывать и путь и имя, т.к. в ворде может быть открыто несколько файлов с одинаковым именем и вы можете обратиться не к тому файлу.
Если файл не сохранён на диске, то тогда нужно просто указать имя без расширения.

Sub макрос()
    Dim DocNew As Document
    Set DocNew = Documents("Документ1")
End Sub

Получение доступа к несохранённому (на диске) открытому файлу:
Макрос
Sub макрос()

    Dim DocNew As Document
   
    ' Цикл по всем открытым ворд-файлам.
    For Each DocNew In Documents
        ' Если файл не сохранённ на диске.
        If DocNew.path = "" Then
            ' Выход из цикла. При этом файлу будет присвоено имя "DocNew",
                ' с помощью этого имени можно обращаться к файлу.
            Exit For
        End If
    Next DocNew
   
    ' Проверка, что есть нужный файл.
    If DocNew Is Nothing Then
        MsgBox "Нет открытого несохранённого (на диске) ворд-файла.", vbExclamation
        Exit Sub
    End If
   
    ' Здесь делайте действия с файлом, используя переменную "DocNew".
        ' Просто ставьте точку после этого имени и выбирайте нужные члены.
   
End Sub
[свернуть]