powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с несколькими документами
8 сообщений из 8, страница 1 из 1
Работа с несколькими документами
    #33666755
NoViY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте

При запуске макроса у меня создаётся второй документ.
Когда я работаю на первом документе (откуда запустил макрос), то нужно перемещаться на второй документ (т.е. я на первом документе выделяю данные, нажимаю кнопку и данные копируются во второй документ).

Проблема: как при нажатии кнопки в первом документе, НАДО перейти на второй документ (второй документ создался при запуске макроса).
Не знаю как это сделать...

Может можно к открытым (или созданым) документам обращаться через какие-нибудь индексы...

Подскажите пожалуйста как это можно реализовать.
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33667005
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К документу можно обратиться по имени или по индексу.

Код: plaintext
1.
    Application.Documents("Report.doc").Activate
    Application.Documents( 1 ).Activate
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33667281
NoViY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открыт мой документ (откуда вызываю макрос), и создан новый документ "Документ1.doc" (при вызове макроса), но не сохранён.

Не получается, если обращаюсь по индексу, то говорит, что неверный индекс. Если по файлу ("Документ1.doc"), то говорит, что файл не правельный (может из-за того что не сохранён, но и с другими файлами работать не тхочет).
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33667437
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NoviyОткрыт мой документ (откуда вызываю макрос), и создан новый документ "Документ1.doc" (при вызове макроса), но не сохранён.
Если документ не сохранен, он не должен в своем названии содержать расширение, как написано у вас.

Смотри, есть два документ "Документ1" и "Документ2", оба открыты и не сохранены. В первый документ добавляем кнопку с событием "Click":

Код: plaintext
    Application.Documents("Документ2").Range.Text = "Test"

Все ок, и по индексу тоже.

Кстати какая у вас версия Word?
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33668198
NoViY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно ругается: "неверное имя файла", хотя имя файла правильное

Office 2003 (11.5604.5606)

Может можно при создании записать в переменную ссылку на созданное окно (документ), и потом обращаться по ней (то же пробовал делать - не получается).
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33668220
NoViY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решил небольшой код привести - всё равно не хочет заносить данные в Документ2...

Вот так при запуске макроса, вызывается форма, и создаётся другой документ (Документ2):


Sub click()
Dim objWord As New Word.Application
UserForm2.Show

objWord.Visible = True

objWord.Documents.Add

Set objWord = Nothing
End Sub

потом на этой форме нажимаю кнопку и данные заносятся в только что созданый документ:

Private Sub cbAdd_Click()
Dim objWord2 As New Word.Application

objWord2.Application.Documents("Документ2").Range.Text = "Test"

Set objWord2 = Nothing
End Sub
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33668377
NoViY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил проблемку, но другим способом:

В листинге выше, я создал переменную, через неё создал документ. Когда нажимаю на кнопку, то данные заносятся через переменную.

Этот блок правильно заработал, когда я UserForm2.Show поставил в конец блока.





Ashton cпасибо за помощь///
...
Рейтинг: 0 / 0
Работа с несколькими документами
    #33668887
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В твоем примере, ты создаешь документ в одном экземпляре Word, а обращаешься к нему уже из другого, вновь созданного.

Еще, UserForm2.Show открывает форму в модальном режиме, а пока форма находится в этом режиме, выполнение кода не продолжится пока ты не закроешь ее.

И вообще, зачем в первом и втором макросе создавать лишние экземпляры Word, если можно оперировать уже имеющимся экземпляром (если ты уже находишься в Word).

Код: plaintext
1.
2.
3.
Public Sub Click()
    Application.Documents.Add
    UserForm1.Show vbModeless
End Sub

Код: plaintext
1.
2.
Private Sub cbAdd_Click()
    Application.Documents("Документ2").Range.Text = "Test"
End Sub

Или можешь сделать паблик объектную переменную и затем к ней обращаться.

Стандартный модуль.

Код: plaintext
1.
2.
3.
4.
5.
Public wdDoc As Word.Document

Public Sub Click()
    Set wdDoc = Application.Documents.Add
    UserForm1.Show vbModeless
End Sub

Модуль формы.

Код: plaintext
1.
2.
Private Sub cbAdd_Click()
    wdDoc.Range.Text = "Test"
End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с несколькими документами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]