Word VBA Макросы: Как переключаться между документами ворд, если имя одного файла не известно?

Автор Дарья, 16 июля 2019, 17:54

Дарья

Имеется редактируемый непостоянный (каждый раз под новым именем) документ.
Макрос переходит в другой постоянный документ по имени файла, там выбирает и копирует таблицу.
Как вернуться в предыдущий документ, чтобы вставить содержимое буфера обмена? Alt + Tab не работает, так как макрос ссылается на имя файла, а оно меняется каждый раз.

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

Присвойте документам, с которыми надо работать, имена (смотрите комментарии в коде).
src означает "source", источник. Это файл, откуда извлекаются данные.
res означает "result", результат. Это файл, который нужно заполнить.

Код
Sub Макрос()

    Dim doc_src As Document, doc_res As Document
   
   
    ' Присваиваем имена документам, с которыми надо работать.
    Set doc_src = Documents("полное имя файла (путь + имя с расширением)")
    Set doc_res = ActiveDocument
   
    ' Пишите имя документа, ставьте точку и выбирайте нужный метод, свойство.
    ' Например, так можно узнать имена файлов.
    ' Результат выводится в View - Immediate Window.
    Debug.Print doc_src.Name
    Debug.Print doc_res.Name
   
End Sub
[свернуть]


Примечания

1. Как указать имя известного документа:

1) можно указать полное имя (путь + имя с расширением);

2) можно указать только имя с расширением.
Но здесь есть опасность. В ворде может быть открыто два файла с одинаковыми именами. Если вы укажите только имя файла, то макрос может обратиться не к тому файлу, как вы думаете. Поэтому, если есть возможность, указывайте полное имя файла. Или делайте проверку: не открыто ли два файла с одинаковыми именами.

2. Не всегда есть необходимость переходить в файл, чтобы с ним что-то сделать. Если можно работать с файлом, не переходя в него, то не переходите, т.к. в этом нет смысла.

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

Если у вас написано много кода и не хочется подставлять имя (sh_src, sh_res), то можете просто переходить с файла на файл так:
doc_src.Activate
doc_res.Activate