Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 12:00:23

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Как узнать GUID доступной, но не подключенной библиотеки
Страниц: [1]   Вниз
Печать
Автор Тема: Как узнать GUID доступной, но не подключенной библиотеки  (Прочитано 2709 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Павел2019
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля
« : 17.08.2019, 00:25:08 »

Помогите решить проблему или подсказать другой подход: Нужно подключить библиотеку зная только ее название.
При переходе на другой комп часть библиотек могут быть  не подключены. Их нужно подключать программно из макроса.  Если конкретно, то речь идет о Microsoft Scripting Runtime - с остальными проще. Разумеется работает метод .AddFromGuid, но для него нужен GUID. Столкнулся с тем, что на разных компах (системах , по крайней мере,  64 и 32 б) он может оказаться разным.  Узнать GUID открытой библиотеки просто. Но как узнать этот параметр нужной и не подключенной библиотеки по ее названию (части названия)? На ум приходит только сканирование списка зарегистрированных библиотек. Он точно существует, т.к. доступен в меню редактора VBA, но где его искать?
Варианты с "поздним связыванием" и прочие стандартные вещи мне известны и не актуальны. Очевидный вариант "открыть в меню "Разработчик" и посмотреть GUID" также не подходит - система передается "неопределенному кругу пользователей".
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 17.08.2019, 15:32:30 »

речь идет о Microsoft Scripting Runtime
Насколько мне известно цеплять её программно нет смысла - достаточно в проекте книги поставить галочку для этой библиотеки руками. Она подцепится автоматом на любом ПК, т.к. является стандартной. Пробовали такой подход?
Плюс можно подключать не только по GUID, но и по пути к файлу. Что-то вроде того:
Код: (vb)
s = "C:\Windows\System32\scrrun.dll"
ThisWorkbook.VBProject.References.AddFromFile s

библиотека эта насколько знаю не перемещается и надо просто определить каталог Windows, что не является проблемой: environ("windir")
« Последнее редактирование: 17.08.2019, 15:41:52 от Дмитрий Щербаков(The_Prist) » Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Павел2019
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля
« Ответ #2 : 17.08.2019, 17:43:11 »

Дмитрий! Вы правы!
Моя проблема была в том, что я считал, что список библиотек определяется текущей настройкой EXCEL (и/или VBA), а это в реальности настройка конкретного проекта. На одном компе часть проектов имеет нужную, библиотеку, а в тех проектах, где я не указывал ее и нет. Между прочим, файл .xlsm без модулей библиотеку не удерживает и пользуется только стандартным набором.
Второй вариант, полагаю, тоже сработает.
Спасибо!
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #3 : 19.08.2019, 09:33:21 »

файл .xlsm без модулей библиотеку не удерживает
да, потому что без единого модуля и строки кода книга не содержит проекта VBA, а следовательно и ссылки на библиотеки тоже отсутствуют. Как становится понятно, достаточно создать любой пустой модуль, поставить нужные галки и сохранить файл.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru