Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 18:37   #1
Danver
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию Не могу вызвать процедуру С ПАРАМЕТРАМИ из другой книги

Не могу вызвать процедуру с параметрами из другой книги, которая открыта и активна... Без передачи параметров вызываю без проблем при помощи
Код:
Function CallShablonSubBeginOfAll(BookName As String) ' вызываем процедуру Начало в шаблоне, а также обрабатываем ошибку если ее нет
    On Error GoTo errНandle: ' запускаем обработчик ошибок
    Call Run(BookName & "!BeginOfAll") ' вызываем процедуру Начало
    Exit Function ' выходим из функции
errНandle: ' если процедуры нет в файле
    MsgBox "Процедура BeginOfAll в файле " & BookName & " отсутствует!" ' сообщаем об этом пользователю в окошке
End Function
но вот с параметрами уже работать не хочет
Код:
Function CallShablonSubBeginOfAll(BookName As String, TypeOtchet As Integer, MesNumb As String, MesName As String, Year As Integer) ' вызываем процедуру Начало в шаблоне, а также обрабатываем ошибку если ее нет
    On Error GoTo errНandle: ' запускаем обработчик ошибок
    Call Run(BookName & "!BeginOfAll(Module_New.mainbook_name, TypeOtchet, MesNumb, MesName, Year)") ' вызываем процедуру Начало
    Exit Function ' выходим из функции
errНandle: ' если процедуры нет в файле
    MsgBox "Процедура BeginOfAll в файле " & BookName & " отсутствует!" ' сообщаем об этом пользователю в окошке
End Function
Выскакивает ошибка, файл прикреплен.

Надеюсь на вашу помощь!
Изображения
Тип файла: png Ошибка.png (4.1 Кб, 117 просмотров)
Danver вне форума Ответить с цитированием
Старый 21.12.2010, 19:12   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а Вы в этом Module_New.mainbook_name уверены?
в самом начале BeginOfAll поставьте какой-то MsgBox - будете уверены, что вошли в BeginOfAll (вызов состоялся, а ошибка внутри из-за парметров, или из-за вызова с дургой книги).
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.12.2010, 18:41   #3
Danver
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию

Код:
Module_New.mainbook_name
я выводил месседжбоксом... это просто переменная с именем главной книги. Я ее отправляю в процедуру другой книги чтобы потом она (процедура) могла обратиться к главной книге и взять нужные данные из листов.

в процедуре BeginOfAll я вставил месседжбоксы под каждый отправляемый параметр...

собственно говоря вот и сам пример!
Вложения
Тип файла: rar Две тестовые книги.rar (14.3 Кб, 17 просмотров)
Danver вне форума Ответить с цитированием
Старый 22.12.2010, 19:35   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в
Function CallShablonSubBeginOfAllSParam(Book Name As String, TypeOtchet As Integer, MesNumb As String, MesName As String, Year As Integer) ' вызываем процедуру Начало в шаблоне, а также обрабатываем ошибку если ее нет

строку вызова написал так:
Call Run(BookName & "!BeginOfAll", ActiveWorkbook.Name, TypeOtchet, MesNumb, MesName, Year) ' вызываем процедуру Начало
первый параметр, которого я так и не понял заменил на ActiveWorkbook.Name.

в результате принял сообщения от BeginOfAll из TestBook2.xls.

у вас в комментари указана причина ошибки
"а также обрабатываем ошибку если ее нет" - Вы вызывали макрос, с таким имененм, которого нет в TestBook2.xls
во-первых: надо было правильно имя функции указать BeginOfAll, а не BeginOfAllBEZParam - там нет такой функции.
во-вторых: для Run первый параметр имя выполняемого какроса, а дальше параметры, которые ему (вызываемому макросу) нужны для работы. Имя макроса и параметры нельзя было запихивать в одну строку. Для Run все это было именем макроса, понятно что макроса с таким именем
BookName & "!BeginOfAll, ActiveWorkbook.Name, TypeOtchet, MesNumb, MesName, Year)"
не было в TestBook2.xls.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 22.12.2010 в 19:39.
IgorGO вне форума Ответить с цитированием
Старый 24.12.2010, 12:34   #5
Danver
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию

извините, за корявый скрипт... я его вытащил из кода проекта, отредактировал, но случайно запаковал и разместил здесь не полностью откорректированную версию!

все отлично работает! СПАСИБО ОГРОМНОЕ!!!!!
Danver вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызвать процедуру fize Помощь студентам 4 14.01.2010 01:51
как вызвать процедуру? ai\ekcah^p Паскаль, Turbo Pascal, PascalABC.NET 4 25.06.2009 11:21
Как вызвать процедуру ??? Marat Помощь студентам 8 02.03.2007 15:11