Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как узнать, запущен ли экземпляр Word? Добавлено: 15.08.11 18:57  

Автор вопроса:  Vitalysan®
Доброго времени суток!
Есть код:

Set WordApp = New Word.Application
Set DocWord = WordApp.Documents.Open(App.Path & "\1.doc")

Как узнать 1.doc уже открыт или нет?
Заранее благодарен

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #1
Добавлено: 15.08.11 21:42
  1. WordApp.Documents
кажется, возвращает коллекцию открытых документов... Прежде всего, объявляем логическую переменную, которой присваиваем false.Дальше пройдись по коллекции в цикле (for...each, например) и проверь имена этих документов (если надо, то и полный путь). Как только нашли, присваиваем переменной true b вываливаемся из цикла (exit for). В итоге мы так или иначе прошли цикл и имеем на руках некое значение переменной (true или false). Ну а теперь выбирай сам, чего делать в том или ином случае...
  1. Dim doc As Word.Document
  2. Dim present As Boolean
  3. present = False
  4. Dim searchname As String
  5. searchname = "нашдок.doc"
  6. For Each doc In WordApp.Documents
  7. If doc.Name = searchname Then
  8.  present = True
  9.  Exit For
  10. End If
  11. Next
  12. If present = True Then
  13. MsgBox ("Нашли")
  14. Else
  15. MsgBox ("Не нашли")
  16. End If

Ответить

Номер ответа: 2
Автор ответа:
 Vitalysan®



Вопросов: 25
Ответов: 61
 Профиль | | #2 Добавлено: 16.08.11 19:07
  1. Set doc = New Word.Document
без этого работать не будет. Но дополнительно документ "Документ1" (или "document1" в англ. версии Ворда, который потом придется искать по имени и выгружать.
Но всё равно, спасибо! Я пока использую поиск открытых окон по hwnd. Тоже неудобно, но пока ничего лучше не придумал

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #3
Добавлено: 16.08.11 22:25
Vitalysan® пишет:
без этого работать не будет
да ну конечно! О_о
Нам не нужен новый экземпляр документа, переменная используется для перебора членов коллекции WordApp.Documents
А значение переменной будет изменяться при каждой итерации в цикле for each
Кстати, приведенный код можно без изменений загнать в vba ворда и прокатить там. Только WordApp надо заменить на Application

Ответить

Номер ответа: 4
Автор ответа:
 Dan



ICQ: 609276007 

Вопросов: 24
Ответов: 195
 Профиль | | #4 Добавлено: 17.08.11 14:18
Дмитрий Юпатов пишет:
Только WordApp надо заменить на Application

Спасибо. Появилась такая хорошая идея!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам