Проверка документа макросом?

Программирование на Visual Basic for Applications
XORXE
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 29.06.2005 (Ср) 3:50

Проверка документа макросом?

Сообщение XORXE » 10.07.2005 (Вс) 23:05

Подскажите пожалуйста.
Нужно выполнить макрос. Но выполнить его нужно в зависимости от, того:
1. открыт документ word или нет.
2. создан ли чистый бланк word или нет.

Как сделать проверку макросом (на существование открытого документа или созданого чистого бланка)?
Жизнь такая же простая штука, как аппельсин. Если только его не разрезать пополам...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2005 (Пн) 2:25

Где-то я это видел...

Сначала надо определиться, что понимается под чистым бланком...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

XORXE
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 29.06.2005 (Ср) 3:50

Сообщение XORXE » 11.07.2005 (Пн) 3:12

GSerg писал(а):Где-то я это видел...

Сначала надо определиться, что понимается под чистым бланком...


Определяемся:
Под чистым бланком понимается документ MS WORD, созданый способами:
1. При запуске Word(a)
2. При нажатии на иконку "Создать", на панели инструментов "Стандартная"
Жизнь такая же простая штука, как аппельсин. Если только его не разрезать пополам...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2005 (Пн) 4:17

Плохо определились.
При запуске Word(а) может создаваться как куча всяких листов, так и не создаваться ничего. Каждый из оных может основываться на разных шаблонах. Каждый шаблон может как не содержать ничего, так и содержать "Войну и мир" в качестве текста по умолчанию.
Вон, Normal.dot сейчас пойду исправлю, и всё.

Посему.
Что происходит при запуске Word(а) у тебя?
Какой для тебя критерий "чистого бланка"? "Чистый бланк", только что созданный, может содержать текст.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

XORXE
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 29.06.2005 (Ср) 3:50

Сообщение XORXE » 11.07.2005 (Пн) 4:56

Для меня критерий "чистого бланка" это:
Самый, что нинаесть стандартный в MS WORD Normal.dot,
который используется для создания чистого листа, на котором пользователь может набирать любой текст (какой захочет).

Самое главное нужно отследить только что созданнный, но еще несохраненный "чистый бланк" как при запуске WORD (когда создается по умолчанию "чистый бланк"), так и при помощи "Стандартной" панели инструментов, а именно кнопка "создать" (создается по умолчанию "чистый бланк").
А после то, как это будет отслежено, будет в зависимости от этого и запущен макрос "N"
Жизнь такая же простая штука, как аппельсин. Если только его не разрезать пополам...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.07.2005 (Пн) 5:23

По умолчанию "бланк" может и не создаваться.
Не называй его бланком :)

Событие Application_DocumentChange есть.
Но чем ты его будешь ловить? В отличие от экселя, в автозагружаемых шаблонах Word не происходит запуск макросов на открытие :)
Таким образом, автозагружаемые шаблоны могут только служить хранилищем макросов, вызываемых по кнопке.
Так что ты можешь, к примеру, создать панель инструментов, при каждом запуске Word кликать на ней кнопку Start, устанавливая тем самым обработчик на Application_DocumentChage. В самом же обработчике проверять, не является ли activedocument nothing, не основан ли он на шаблоне normal.dot, чему равно .Saved, чему равно .FullName и сколько в нём символов...
Всё это будет работать до первой ошибки в коде, после которой обработчик сбросится :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

XORXE
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 11
Зарегистрирован: 29.06.2005 (Ср) 3:50

Сообщение XORXE » 11.07.2005 (Пн) 5:44

Задам вопрос более подробно.
У меня есть:
1. Макрос "N1". Он запускается при загруженом WORD(e), (Использую Document_New), когда пользователь нажимает на панель "Стандартная" кнопка "Создать".
2. Макрос "N2" (тот же, что N1) но запускается он уже сразу после запуска WORD (когда word поумолчанию создаст "чистый бланк").

И всебы было замечательно. НО !!!
Я заметил - как только я закрываю все рабочие документы и WORD остается "голым" то:

МОЙ макрос просто отказывается работать, а именно, когда нажимаю на панели "Стандартная" кнопку "Создать".

Самое интересное, что после этого я делаю следующее:
1. ЗАКРЫВАЮ WORD
2. ЗАГРУЖАЮ WORD

После этих моих действий оба макроса работают, но опять только до тех пор, пока не закрою все документы и опять не попытаюсь создать документ ("чистый бланк") заново.

Вот такая моя проблемма. Бьюсь уже 2 недели, а что делать незнаю.
Помогите горю.
Жизнь такая же простая штука, как аппельсин. Если только его не разрезать пополам...

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Сообщение Shurrik » 13.07.2005 (Ср) 7:22

Прочитай про автомакросы в справке по Word:

AutoExec When you start Word or load a global template
AutoNew Each time you create a new document
AutoOpen Each time you open an existing document
AutoClose Each time you close a document
AutoExit When you quit Word or unload a global template
Колесо: Хочешь жить? Умей вертеться.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91

    TopList  
cron