Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 28 июля 2022, 18:49

Название: Application.Run не возвращает результат функции
Отправлено: Посетитель от 28 июля 2022, 18:49
Добрый день! Application.Run не возвращает результат функции из другой книги, хотя код вызывается и выполняется без ошибок. В чем может быть проблема? В интернете пишут, что такие конструкции работают.
Excel 2016

Пример:

Книга1
x = Application.Run ("GetSome")

Книга2
public function GetSome()
GetSome = 1
end function
Название: Re: Application.Run не возвращает результат функции
Отправлено: Администратор от 28 июля 2022, 18:59
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

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

Правильно так, это при условии, что вторая книга открыта. Если книга закрыта, то нужно указать путь, по которой находится книга.

Sub Макрос()

    Dim x
   
    x = Application.Run("'Книга2.xlsb'!Module1.GetSome")

End Sub
Название: Re: Application.Run не возвращает результат функции
Отправлено: Посетитель от 28 июля 2022, 19:26
В оригинальном коде так и есть, я просто опустил эти подробности, я же говорю, код из другой книги выполняется, возвращается обратно, но х ничему не присваивается.
Название: Re: Application.Run не возвращает результат функции
Отправлено: Администратор от 28 июля 2022, 19:37
Покажите код, какой он у вас в оригинале.
И в режиме F8 вы запускали код? Жёлтая строка заходит в функцию "GetSome"?
Название: Re: Application.Run не возвращает результат функции
Отправлено: Администратор от 28 июля 2022, 19:42
Вот я сделал два файла для теста. Как тестировать. Откройте обе книги. Запускайте макрос из книги 1.
У меня эта ситуация работает.
Название: Re: Application.Run не возвращает результат функции
Отправлено: Посетитель от 28 июля 2022, 19:59
Да, ситуация из примера работает, правда сейчас я с домашнего компа, а тестировал на рабочем. Код из другой книги там точно выполнялся, в режиме отладки (F8) перепрыгивал в другую книгу. Есть ли вероятность, что не возвращается значение из-за каких-либо политик безопасности windows? Из отличий только формат книги, тестировал на xlsm.
Название: Re: Application.Run не возвращает результат функции
Отправлено: Администратор от 28 июля 2022, 20:05
Не знаю, сделайте на работе так же два файла и смотрите, будет работать или нет.
Если будет, а у ваш код не работает, значит в вашем коде есть какая-то неявная ошибка.
Название: Re: Application.Run не возвращает результат функции
Отправлено: Посетитель от 29 июля 2022, 22:41
В общем проблемы была в том, что вызываемая функция находилась не в модуле, а в листе. Если в листе, то результат не возвращается.