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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2011, 03:45   #1
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию Запуск макроса из другой книги

Уважаемые мастера и знатоки Excel!
Подскажите плиз, возможно ли запустить макрос из другой книги. Т.е. имеется общая база (Base) с инвентарными номерами и ряд книг (1 и более), которые постоянно меняются, дополняются, удаляются в которых также имеются записи с инв.номерами. Вопрос, возможно ли не открывая общей базы, а открывая только эти небольшие книги определить есть ли в них инвентарные номера, которые есть в общей базе и выделить их. Или все таки необходим какой то промежуточный файл, в котором был бы этот макрос. Спасибо всем кто заинтересуется.
Вложения
Тип файла: rar Поиск.rar (28.3 Кб, 18 просмотров)
Olper вне форума Ответить с цитированием
Старый 16.10.2011, 09:25   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

А какое отношение название темы имеет к заданному вопросу?

Цитата:
Или все таки необходим какой то промежуточный файл, в котором был бы этот макрос
Необходим

Код:
Private Const BasePathAndName As String = "C:\Тут Ваш полный путь к файлу\Base.XLS"

Sub io()
Dim v, x As New Collection
On Error Resume Next
With CreateObject("Excel.Application")
    With .Workbooks.Open(BasePathAndName)
        For Each v In .Sheets(1).UsedRange.Columns(3).Value
            If v <> "" Then If IsNumeric(v) Then x.Add v, CStr(v)
        Next
        .Close False
    End With
End With
On Error GoTo L1
L1: If Err Then Resume L2
With ActiveWorkbook.ActiveSheet
    For Each v In .UsedRange.Columns(1).Cells
        If x.Item(CStr(v)) <> "" Then v.Interior.ColorIndex = 6
L2: Next
End With
End Sub
Вложения
Тип файла: zip Поиск.zip (37.1 Кб, 19 просмотров)
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 16.10.2011, 12:59   #3
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Спасибо Nerv? Идея заключается в том, что бы не открывать файл Base, т.к. он очень большой (порядка 500 Мб + ссылки, связи...я его упростил до безобразия) и его открытие на слабых машинах занимает кучу ресурсов и времени, а сам макрос был бы в нем...хотя возможно Вы и правы, наверно я хочу многого и невозможного.
Olper вне форума Ответить с цитированием
Старый 16.10.2011, 13:52   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Что значит "не открывать файл Base"? Вы можете прочитать закрытую книжку? Так и с файлом. При чтении из него данных, он в любом случае открывается тем или иным способом.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 16.10.2011, 14:32   #5
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Olper Посмотреть сообщение
Спасибо Nerv? Идея заключается в том, что бы не открывать файл Base, т.к. он очень большой (порядка 500 Мб + ссылки, связи...я его упростил до безобразия) и его открытие на слабых машинах занимает кучу ресурсов и времени, а сам макрос был бы в нем...хотя возможно Вы и правы, наверно я хочу многого и невозможного.
Если там полно формул, можно сократить размер файла, заменив их значениями
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 16.10.2011, 14:33   #6
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

А если как-то так, формула на листе "Кв198":
Код:
=ЕСЛИ(ЕОШИБКА(ВПР(A2;'D:\Загрузки\Поиск\[Base.XLS]Список'!$C$2:$C$24;1;0));"нет такого номера";"номер есть")
Вот так симпатичнее:
Код:
=--ЕОШИБКА(ВПР(A2;'D:\Загрузки\Поиск\[Base.XLS]Список'!$C$2:$C$24;1;0))
и УФ по нулям.

Последний раз редактировалось nilem; 16.10.2011 в 15:04.
nilem вне форума Ответить с цитированием
Старый 16.10.2011, 16:00   #7
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Кстати Nerv, прогнал Ваш макрос...и не совсем понял, а что он делает и в каком файле... у меня все пусто.
Nilem, спасибо, уже где то близко.
Olper вне форума Ответить с цитированием
Старый 16.10.2011, 17:04   #8
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Olper Посмотреть сообщение
Кстати Nerv, прогнал Ваш макрос...и не совсем понял, а что он делает и в каком файле... у меня все пусто.
Nilem, спасибо, уже где то близко.
Для начала укажите в переменной полный путь к Вашему файлу (см. пример выше) Открываете Книгу1, затем один из Ваших файлов (не базу), и в нем нажимаете Alt+F8, потом Enter.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 17.10.2011, 00:52   #9
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Спасибо Nerv, примерно то что надо
Olper вне форума Ответить с цитированием
Старый 17.10.2011, 01:56   #10
Olper
Пользователь
 
Регистрация: 21.06.2010
Сообщений: 87
По умолчанию

Еще раз спасибо Nerv, маненько доработал, работает по кнопке из книги1.
Olper вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Макроса при открытии книги sasha_prof Microsoft Office Excel 9 12.07.2011 14:48
Запуск макроса из другой книги! mephist Microsoft Office Excel 3 27.07.2009 15:06
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
снятие пароля с книги/листа из другой книги? Bezdar Microsoft Office Excel 3 25.12.2008 11:59