Как заставить VBA работать только с текущим документом?

  • Автор темы Автор темы aleksasha
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

aleksasha

Топикстартер
15 лет на форуме
Сообщения
316
Реакции
5
Макрос вордовский обрабатывает документ, добавляя в процессе символьные и абзацные стили. Но если открыто несколько документов, то выполнение макроса может переключиться на другой неактивный документ. Что, например, приводит к ошибке, что такой стиль уже существует и т.п. Как этого избежать? Сорри, что вопрос не совсем по теме конфы (цель правда одна - подготовить тексты для верстки в Индезе).
 
Ответ: Как заставить VBA работать только с текущим документом?

Макрос написан "с нуля", или мышкой?
Переключение на другой документ происходит случайно, или на какой-то определенной строке макроса?
 
Ответ: Как заставить VBA работать только с текущим документом?

aleksasha сказал(а):
Но если открыто несколько документов, то выполнение макроса может переключиться на другой неактивный документ.
1. кривой макрос
или
2. в свойствах документа где-нибудь стоит "обрабатывать все открытые документы" или чего-то в этом роде.
 
Ответ: Как заставить VBA работать только с текущим документом?

Jоhan сказал(а):
Макрос написан "с нуля", или мышкой?

50/50.

Jоhan сказал(а):
Переключение на другой документ происходит случайно, или на какой-то определенной строке макроса?

На определенной строке в большинстве случаев... Например, при добавлении нового стиля, как я уже говорил...
 
Ответ: Как заставить VBA работать только с текущим документом?

Можно при вести несколько нацальных строк?
 
Ответ: Как заставить VBA работать только с текущим документом?

aleksasha сказал(а):
На определенной строке в большинстве случаев...
если можно эту строку +- пара строк
 
Ответ: Как заставить VBA работать только с текущим документом?

Eugen сказал(а):
если можно эту строку +- пара строк

ActiveDocument.Styles.Add Name:="MultiplySign", Type:=wdStyleTypeCharacter
With ActiveDocument.Styles("MultiplySign").Font
.Name = "Arial"
.Size = 12
End With
 
Ответ: Как заставить VBA работать только с текущим документом?

наверно лучше пользовать не активный документ а обращаться по имени.
Например:
docname = ActiveDocument.name
' (а если файл всегда один и тот же то сразу его имя)
Documents(docname).Styles.Add name:="MultiplySign", Type:=wdStyleTypeCharacter
 
Ответ: Как заставить VBA работать только с текущим документом?

Можно просто присвоить переменной ссылку на документ типа
Код:
Dim myDoc As Document
Set myDoc = ActiveDocument
И всё.
 
Ответ: Как заставить VBA работать только с текущим документом?

vbatushev сказал(а):
Можно просто присвоить переменной ссылку на документ типа
Код:
Dim myDoc As Document
Set myDoc = ActiveDocument
И всё.

Нет, все же это был баг от Мелкософта... Поставил Office 2003 SP1 - все полечилось. Хотя я и выяснил, как бороться с этим и отчего глюкъ...
 
Статус
Закрыто для дальнейших ответов.