Что вам нужно сделать, это сохранить несколько версий переменных, по одному на каждый документ.
Поэтому я бы посоветовал вам создать простой класс для хранения различных значений.
Затем вы сохраняете их в коллекции, отображающей набор данных с именем документа или аналогично ключу.
В модуле класса (MyData), помеченном как общедоступный:
Public data1 as String
Public data2 as Integer
В модуле с обработчиками событий:
Dim c as new Collection 'module global declaration
Sub AddData()
Dim d as new MyData 'Your data set
d.data1 = "Some value"
d.data2 = 42
c.add Value:=d, Key:=ActiveDocument.name
End Sub
Затем, когда вы вводите обработчик событий, вы извлекаете данные и используете конкретный набор для текущего активного документа.
Sub EventHandler()
Dim d as MyData
set d = c.item(ActiveDocument.name)
'use data
'd.data1...
End Sub
Пожалуйста, обратите внимание, что этот код только на концептуальном уровне. Это не работает, вы должны применить это к вашей проблеме, но это должно дать вам некоторое представление о том, что вам нужно делать. Вам нужно будет добавить множество обработчиков ошибок, проверять, находится ли элемент в коллекции и т. Д., Но я надеюсь, что вы понимаете концепцию продолжать попытки самостоятельно.
Причина этого в том, что, как я понимаю ситуацию из вашего вопроса, у вас работает только одна версия скрипта, но несколько документов. Следовательно, сценарий должен знать обо всех различных документах.
С другой стороны, если каждый документ будет иметь свой собственный код / обработчик событий, а значит, запускать несколько версий скрипта, вам не нужно решение, представленное выше. Вместо этого вам нужно быть осторожным, на какой экземпляр документа вы ссылаетесь в своем скрипте. Всегда используя «ThisDocument» вместо «ActiveDocument», вы можете добиться изоляции, если код размещен в каждом открытом документе.
Однако, насколько я понял, у вас работает только одна версия скрипта, отдельная от открытых документов, поэтому применимо первое решение.
Удачи!