powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
7 сообщений из 7, страница 1 из 1
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487300
denden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Ситуация такая.
Есть файл "Книга1.xls", есть файл "Книга2.xls". Есть макрос надстройки "MyMacros.xla".

Принцип работы следующий:
1. Открываю "Книга1.xls"
2. Через Сервис->MyMacros вызываю надстройку "MyMacros.xla".
3. В MyMacros.xla предоставляется возможность открыть другой файл. Открываю "Книга2.xls".
4. В "Книга2.xls" в объекте "Module1" описана глобальная константа MyVar.

Вопрос: как из макроса надстройки "MyMacros.xla" обратиться к "Книга2.xls" и вытащить значение глобальной константы MyVar?

Спасибо
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487383
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли напрямую обратится к переменной из другой книги - не помню. Но в той другой книге, ты всегда можешь объявить глобальную функцию типа
function GetMyVar
GetMyVar = MyVar
end function
а потом вызывать эту функцию из любой книги через somevar = Book1!Module1.GetMyVar()
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487456
denden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На счет вызова функции, которая описана в макросе другой книге - это реализуемо и это понятно.

А вот как обратиться к глобальной константе, которая, например, описана в том же модуле, что функция?
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487467
denden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация такова, что макрос другой книги - неизменный, и дополнительные функции туда не дописываются. Есть только глобальная константа, значение которой необходимо определить из макроса надстройки.
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487619
denden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В макросе книги "Книга2.xls" прописал функцию

function GetMyVar
GetMyVar = MyVar
end function

В макросе надстройки такая ситуация:

Public w_e, fs As Variant

' ** Открываю книга2 ** '
fOpen = Application.GetOpenFilename("Exel File(*.xls), *.xls", 1, "Îòêðîéòå ôàéë ýòàëîíà")

Set fs = CreateObject("Scripting.FileSystemObject")
w_e = fs.GetFileName(fOpen)

w_e приимает значение - Книга2.xls

Далее вызываю функцию (пробую двумя способами), но оба возвращают пустое значение:

my_var = w_e!Module1.GetMyVar()
MsgBox my_var

my_var = Workbooks(w_e)!Module1.GetMyVar()
MsgBox my_var

Может в синтаксисе ошибку делаю?
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487695
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denden' ** Открываю книга2 ** '
fOpen = Application.GetOpenFilename("Exel File(*.xls), *.xls", 1, "Îòêðîéòå ôàéë ýòàëîíà")

Set fs = CreateObject("Scripting.FileSystemObject")
w_e = fs.GetFileName(fOpen)

w_e приимает значение - Книга2.xlsЭ? Это что за фигня? w_e в данном случае это просто текстовая перменная с именем файла. К открытию книги это отношения не имеет.

Короче. В одной книге (hello.xls) в независимом модуле описываешь:
Код: plaintext
1.
2.
3.
4.
5.
6.
Option Explicit

Public g_Hello As String

Function getVar()
    getVar = g_Hello
End Function
в вызывающей книге пишешь макрос:
Код: plaintext
1.
2.
3.
    Dim wb As Workbook, str As String
    Set wb = Workbooks.Open("hello.xls")
    str = Run("hello.xls!getVar")
    Debug.Print str
все
...
Рейтинг: 0 / 0
Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
    #34487765
denden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, большое спасибо, всё получилось, только с небольшой корректировкой: hello.xls необходимо заключить в одинарные кавычки:

str = Run("'hello.xls'!getVar")

Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как обратиться из макроса надстройки к глобальной переменной макроса другой книги
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]