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

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

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

Author24 — интернет-сервис помощи студентам
открываю програмно Ворд и некий документ, как отловить, что ворд или документ закрыл пользователь?
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2008, 14:01
Ответы с готовыми решениями:

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

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

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

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

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

С этого момента могу делать с документом что хочу..
Но вот если я закрываю документ не програмно, а нажав на крестик в углу, то как понять, что кто-то закрыл документ или ворд? послать ли сообщение программе, проверить статус докмента, еще как-то?
0
Vita
22.05.2008, 15:58 4
Попробуй посмотреть события и обработать те, что надо, у объектов Ворда, например, Quit у Word.Application.
Vita
22.05.2008, 16:04 5
Код
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 6
насколько я понял, тебе надо написать свой код в событии Document_close (или я опять что нибудь не так понял?)
0 / 0 / 0
Регистрация: 09.10.2007
Сообщений: 23
22.05.2008, 17:43  [ТС] 7
ну просто огромедное спасибо. действительно 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 8
Во-первых, немного по оформлению программ в топике, об этом красным цветов написано под знаком ! вверху, когда пишешь сообщение:
Если написать
[ c o d e ]
' только без пробелов слово c o d e
' то получится вот что
[ / c o d e ]
Код
  ' только без пробелов слово c o d e
  ' то получится вот что
Код
For Each WordDoc In WordApp.Documents
  If WordDoc.Name = mvarFileName Then
    сделать что-то 
  Exit For
End If
Этот цикл меняет значение переменной таким образом, что переменная не может ловить события. Пожтому используйте другую переменную, объявленную внутри подпрограммы, т.е.
Код
  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
или же
Код
  Set WordDoc = WordApp.Documents(mvarFileName)
И в конце работы, если нужно закрыть Ворд
Код
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  [ТС] 9
Большое спасибо за объяснение!
0
25.05.2008, 14:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2008, 14:21
Помогаю со студенческими работами здесь

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

Как сделать что бы после закрытия файла Word открылась первая форма?
//--------------------------------------------------------------------------- void __fastcall...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru