1

Тема: Глобальная переменная

Как правильно объявит переменную, что бы использовать ее в разных модулях и формах в т.ч. из модулей подключенных шаблонов?

Пробовал запись в разделе модуля Declarations типа: Global MyString as String

Отредактировано mikkelle (08.02.2011 18:00:30)

2

Re: Глобальная переменная

Общие переменные объявляются в начале модуля, до процедур и функций. Пример: Public N As Integer

Макросам доступны общие переменные своего модуля, других модулей документа и модулей подключенных документов (references), за исключением модулей с директивой "Option Private Module".

Для ясности с переменными полезно в начале модуля добавлять директиву "Option Explicit"

Макросы под заказ и готовый пакет - mtdmacro.ru

3

Re: Глобальная переменная

Спасибо, Вождь
1. А теперь поясните, т.е. из кода написанного в модуле одного подключенного документа сослаться на глобальную переменную в модуле другого подключенного документа никак нельзя?
2. А есть ли какие либо способы объявить переменную для всего приложения, допустим где-то на запуске Word?

4

Re: Глобальная переменная

mikkelle пишет:

...сослаться на ... переменную в модуле другого подключенного документа...

Нельзя

mikkelle пишет:

...объявить переменную для всего приложения...

Для всего Word - нельзя.

Можно подойдут Variables?

Макросы под заказ и готовый пакет - mtdmacro.ru

5

Re: Глобальная переменная

Variables имеют один недостаток, они относятся к конкретному документу, а потому по ходу работы, открывая и закрывая документы сталкиваемя с с проблемой постоянного добавления (или удаления) их.

6

Re: Глобальная переменная

mikkelle пишет:

Variables имеют один недостаток, они относятся к конкретному документу, а потому по ходу работы, открывая и закрывая документы сталкиваемя с с проблемой постоянного добавления (или удаления) их.

Я бы порекомендовал попробовать воспользоваться переменными окружения OS
Например так:

Dim WshEnvironment As Object
Dim WshShell As Object
Set WshShell = CreateObject("Wscript.Shell")
Set WshEnvironment = WshShell.Environment("User")
' Cохраняем данные в переменной уровня пользователя
WshEnvironment("MyVar") =  "Строка данных"
' Получаем данные
Msgbox WshEnvironment("MyVar")

7

Re: Глобальная переменная

mikkelle пишет:     ...сослаться на ... переменную в модуле другого подключенного документа...
Вождь пишет:       Нельзя

Можно сослаться на свойства Property Get/Let/Set другого класса из коллекции Application.VBE.VBProjects

Отредактировано Aent (11.02.2011 14:37:56)

8

Re: Глобальная переменная

mikkelle пишет:

Variables имеют ... недостаток ... сталкиваемя с проблемой постоянного добавления (или удаления)...

Проще всего для стороннего хранения данных в течении сеанса работы MS Word использовать временный скрытый документ:
Application.Documents.Add Visible:=False.
Та же переменная wink

Макросы под заказ и готовый пакет - mtdmacro.ru

9

Re: Глобальная переменная

Вождь пишет:

Проще всего для стороннего хранения данных в течении сеанса работы MS Word использовать временный скрытый документ

Да тут вариантов куча:
1) В реестр
2) В текстовый файл в каталоге документа или в предопределённой папке
и т.д.

10

Re: Глобальная переменная

Aent, Вождь большое спасибо, действительно вариантов оказывается много, сейчас попробую все обкатать.
Просьба к Aent по поводу

Можно сослаться на свойства Property Get/Put/Set другого класса из коллекции Application.VBE.VBProjects

Не растолкуете ли?