Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Вопрос по запуску макроса из другого файла Добавлено: 18.06.08 07:45  

Автор вопроса:  Jasmin
Здравствуйте!

Есть такой кусок кода:
        With Application.FileSearch
          .NewSearch
          .LookIn = WorkDirFiles
          .Filename = Trim(NumberSKV & "*.xls")
          If .Execute() > 0 Then
            Workbooks.Open Filename:=WorkDirFiles & "Calculation(SorokinFond).xls", UpdateLinks:=False
            Workbooks.Open Filename:=.FoundFiles(1)
            actWorkTemp = ActiveWorkbook.Name
        
            Worksheets("Base").Activate
            j = 4
            Do While Not IsEmpty(Range("B" & j).Value)
              If Range("B" & j).Value = DateSKV Then
                Range("B" & j).Value = 1
                Range("C" & j).Value = 0
                Application.Calculate
'               ***** вызов макроса
                a = Application.Run("Calculation(SorokinFond).xls!CalcRateFromFileH", actWorkTemp)
'               *****
              End If
              j = j + 1
            Loop
            Workbooks("Calculation(SorokinFond).xls").Close SaveChanges:=False

При попытке выполнить пишет, что не может найти данный макрос.

Подскажите, что делать ?

Спасибо

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #1 Добавлено: 18.06.08 07:46
:-) Забыла подкорректировать. Там есть корректное закрытие If и With.

Ответить

Номер ответа: 2
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #2 Добавлено: 18.06.08 17:51
Попробуй запустить безпараметров. Типа
a = Application.Run("Calculation(SorokinFond).xls!CalcRateFromFileH";)
. У меня такая же проблема была. По русски толковой информации с примерами про метод "Application.Run" не нашёл. Без параметров всё работает, с параметрами - ни в какую! Чё только не пробовал. Пришлось вместо параметра записывать текст в ячейку А1, из которой вызываемая процедура(макрос) извлекала этот текст. PS: Только сообщение вроде бы другое было.

Ответить

Номер ответа: 3
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #3 Добавлено: 18.06.08 18:00
Попробуй ещё запустить с полным путём к файлу типа:
a = Application.Run("C:\Calculation(SorokinFond).xls!CalcRateFromFileH";)

и поставить одиночные кавычки:
Application.Run("'C:\Calculation(SorokinFond).xls'!CalcRateFromFileH";)

А лучше почитай примеры из Экселевской справки про метод "Run". Там по англ., но кое что понять можно.

Ответить

Номер ответа: 4
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #4 Добавлено: 19.06.08 09:04
Примеры читала. Там как у меня написано. Оттуда и брала. :-)

С полным путем пробовала. Не помогает.
Пробовала открывать/закрывать в теле цикла каждый раз. Не помогает. Не видит и все тут.

Возникли сомнения, может я слишком мудро пытаюсь запустить ?

Мне нужно вот так:
1. Имеются книги 2 и 4 с Макросами.
2. Открываю Книгу 1.
3. Нажимаю кнопку меню. Запускается Книга 2 с макросами.
4. По списку номеров книг на листе из Книги 1 нужно выполнить код из Книги 2. В процессе выполнения этого кода нужно открыть Книгу 3 и обработать ее Макросом из Книги 4. Естественно открыв Книгу 4.
5. Закрыть Книгу 3 и 4. Вернуться к продолжению кода в Книге 2 для следующего значения в списке в Книге 1.

При попытке выполнить макрос из Книги 4 и возникает ошибка.

Если Макрос из книги 4 перекопировать в Книгу 1 (где список), то все прекрасно выполняется, запускается. А так не хочет.

Может есть ограничения на глубину вызова макросов из других файлов ?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам