С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 09.10.2007
Сообщений: 23

Как отловить события закрытия/открытия WORD файла?

22.05.2008, 14:01. Показов 3194. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
открываю програмно Ворд и некий документ, как отловить, что ворд или документ закрыл пользователь?
Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2008, 14:01
Ответы с готовыми решениями:

Нужно отловить момент нажатия кнопки 'Отмена' в стандартном диалоге открытия файла
Никак не могу отловить момент нажатия кнопки 'Отмена' в стандартном диалоге открытия файла! Кнопки выбора файла и 'хелпа' ловятся через...

Отлов события открытия\закрытия cd привода и обнаружение наличия диска
Поздравляю всех с новым годом!) Хотел узнать, нужно поставить обработчики на такие события как открытие\закрытие cd привода и наличие...

События окон - открытия, закрытия и ухода на задний\передний план
Добрый день. Пока не смог нащупать решение проблемы и прошу помощи. Qt, linux, но сути это по идее не должно поменять. Управление...

8
krosh
22.05.2008, 14:50
извини, не понял вопроса.
спроси еще раз по другому.
0 / 0 / 0
Регистрация: 09.10.2007
Сообщений: 23
22.05.2008, 15:55  [ТС]
делаю
Set WordApp = GetObject(, 'Word.Application')
Set WordDoc = WordApp.Documents.Open(FilePath & FileName, , True)

С этого момента могу делать с документом что хочу..
Но вот если я закрываю документ не програмно, а нажав на крестик в углу, то как понять, что кто-то закрыл документ или ворд? послать ли сообщение программе, проверить статус докмента, еще как-то?
0
Vita
22.05.2008, 15:58
Попробуй посмотреть события и обработать те, что надо, у объектов Ворда, например, Quit у Word.Application.
Vita
22.05.2008, 16:04
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
 
Dim WithEvents a As Word.Application
 
Private Sub a_DocumentChange()
  Debug.Print 'a_DocumentChange'
End Sub
 
Private Sub a_Quit()
  Debug.Print 'a_Quit'
End Sub
 
Private Sub Form_Load()
  Set a = CreateObject('Word.Application')
  a.Documents.Add
  a.Visible = True
End Sub
 
' Вывод:
a_DocumentChange
a_Quit
ОДНАКО, если у Ворда нет окон, он ничего не сообщает.
krosh
22.05.2008, 16:07
насколько я понял, тебе надо написать свой код в событии Document_close (или я опять что нибудь не так понял?)
0 / 0 / 0
Регистрация: 09.10.2007
Сообщений: 23
22.05.2008, 17:43  [ТС]
ну просто огромедное спасибо. действительно WithEvents - то что нужно.
только начала с этим копаться, и есть одна непонятка. Если я например
пишу
Dim WithEvents WordDoc As Word.Document

то выдается ошибка на таком коде (если WithEvents не писать, то все прекрасно работает)

For Each WordDoc In WordApp.Documents

If WordDoc.Name = mvarFileName Then
сделать что-то
Exit For
End If
Next WordDoc

то есть WordDoc становится каким-то другим? каким?
0
Vita
22.05.2008, 18:29
Во-первых, немного по оформлению программ в топике, об этом красным цветов написано под знаком ! вверху, когда пишешь сообщение:
Если написать
[ c o d e ]
' только без пробелов слово c o d e
' то получится вот что
[ / c o d e ]
Code
1
2
  ' только без пробелов слово c o d e
  ' то получится вот что
Code
1
2
3
4
5
For Each WordDoc In WordApp.Documents
  If WordDoc.Name = mvarFileName Then
    сделать что-то 
  Exit For
End If
Этот цикл меняет значение переменной таким образом, что переменная не может ловить события. Пожтому используйте другую переменную, объявленную внутри подпрограммы, т.е.
Code
1
2
3
4
5
6
7
8
  Dim tmpDoc as Word.Document
  For Each tmpDoc In WordApp.Documents
    If tmpDoc.Name = mvarFileName Then
      Set WordDoc = tmpDoc ' если нужно установить эту переменную
      ' сделать что-то 
      Exit For
    End If
  Next tmpDoc
или же
Code
1
  Set WordDoc = WordApp.Documents(mvarFileName)
И в конце работы, если нужно закрыть Ворд
Code
1
2
3
4
Private Sub Form_Unload(Cancel As Integer)
  Set WordDoc = Nothing
  WordApp.Quit
End Sub
0 / 0 / 0
Регистрация: 09.10.2007
Сообщений: 23
25.05.2008, 14:21  [ТС]
Большое спасибо за объяснение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2008, 14:21
Помогаю со студенческими работами здесь

Время открытия и закрытия файла
Такое дело: если я открыл обычный файл, я написал код чтобы софт отобразил что его открыл, но как мне сделать чтобы он также отображал...

Перезапуск приложения после открытия и закрытия файла
У меня по клику на picturebox открывается файл Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles...

Как сделать что бы после закрытия файла Word открылась первая форма?
//--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) ...

Отлов события открытия файла в приложении
Всем привет. У меня такой трабл. Создал в Delphi текстовый редактор, но реализацию автоматического определения файла , при открытии файла с...

Как отловить событие закрытия формы
Здравствуйте, есть макрос с одной строчки кода: Печатать.Show если в появившейся форме её закрыть, то всему конец, как отловить что форму...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru