Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменный путь для dll в vba, Пути в vba для dll 
V
    Опции темы
Langaru
Дата 29.3.2018, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Доброго времени суток!
Имеется файл dll и есть желание использовать его в своём проекте. 
При прописывании полного пути нахождения этого файла - всё работает прекрасно.
Код

Private Declare Function get_global_param_string_private Lib "C:\Probe\CoolProp_stdcall.dll" Alias "_get_global_param_string@12" (ByVal param As String, ByVal output As String, ByVal n As Integer) As Long

Собственно вопрос. Что нужно сделать, чтобы функции из данной библиотеки работали, когда dll находится в одной папке с ексель документом, вне зависимости от абсолютного пути папки.
При объявлении только имени dll - вылезает ошибка "File not found".
P.s. Данная библиотека свободно распространяема. Входит в состав программы Coolprop.org.

PM MAIL   Вверх
Naghual
Дата 29.3.2018, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Найти в реестре регистрационную запись этой ДЛЛ.
Если есть - взять путь к существующей оттуда.
Если нет - Зарегистрировать и, см.п.1.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Langaru
Дата 29.3.2018, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата(Naghual @ 29.3.2018,  14:31)
Найти в реестре регистрационную запись этой ДЛЛ.
Если есть - взять путь к существующей оттуда.
Если нет - Зарегистрировать и, см.п.1.

Проект должен работать на компьютерах с правами пользователя. Зарегистрировать библиотеку не представляется возможным.
PM MAIL   Вверх
Akina
Дата 29.3.2018, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Цитата(https://msdn.microsoft.com/en-us/library/aa716201(v=vs.60).aspx)

If you do not specify a path for libname, Visual Basic will search for the file in the following order:


  • Directory containing the .exe file

  • Current directory

  • Windows system directory (often but not necessarily \Windows\System)

  • Windows directory (not necessarily \Windows)

  • Path environment variable



Так что не указывай путь, а DLL клади в папку с исполняемым файлом. Дополнительно - на всякий случай при открытии файла устанавливай текущий каталог, равный каталогу местоположения файла.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Langaru
Дата 29.3.2018, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 29.3.2018,  15:16)
Цитата(https://msdn.microsoft.com/en-us/library/aa716201(v=vs.60).aspx)

If you do not specify a path for libname, Visual Basic will search for the file in the following order:



  • Directory containing the .exe file


  • Current directory


  • Windows system directory (often but not necessarily \Windows\System)


  • Windows directory (not necessarily \Windows)


  • Path environment variable




Так что не указывай путь, а DLL клади в папку с исполняемым файлом. Дополнительно - на всякий случай при открытии файла устанавливай текущий каталог, равный каталогу местоположения файла.

Читал, пробовал. Не прокатило. У меня пишет, что файл не найден.
Всё закинул по ссылке.

Ссылка на файлы
PM MAIL   Вверх
Akina
Дата 29.3.2018, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Код

Private Sub Workbook_Open()
ChDrive (Left(ThisWorkbook.Path, 2))
ChDir (ThisWorkbook.Path)
End Sub

Ошибки при загрузке не возникает.
В режиме отладки импортированные функции вроде работают...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Langaru
Дата 29.3.2018, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 29.3.2018,  15:49)
Код

Private Sub Workbook_Open()
ChDrive (Left(ThisWorkbook.Path, 2))
ChDir (ThisWorkbook.Path)
End Sub

Ошибки при загрузке не возникает.
В режиме отладки импортированные функции вроде работают...

Добавил. Пробовал это и раньше. У меня результат тот же.

Fail

Mark

Это сообщение отредактировал(а) Langaru - 29.3.2018, 16:05
PM MAIL   Вверх
Akina
Дата 29.3.2018, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



Сейчас проверил ещё раз "вчистую": распаковал архив в папку, открыл файл (система безопасности заблокировала макросы), открыл VBA-редактор, добавил код, закрыл с сохранением, открыл - ошибки нет, значения в ячейках пересчитаны с нуля на соотв. ненулевые. См. аттач.

Так что ищи косяк в другом месте... например в настройках центра безопасности экселя.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  1.png 122,80 Kb


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Langaru
Дата 29.3.2018, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 29.3.2018,  16:13)
Сейчас проверил ещё раз "вчистую": распаковал архив в папку, открыл файл (система безопасности заблокировала макросы), открыл VBA-редактор, добавил код, закрыл с сохранением, открыл - ошибки нет, значения в ячейках пересчитаны с нуля на соотв. ненулевые. См. аттач.

Так что ищи косяк в другом месте... например в настройках центра безопасности экселя.

Проделал тоже самое. Завелось.
Переместил в другую папку всем составом - опять не работает.
После этого открыл тот файл, где работало - там также не работает.

Это сообщение отредактировал(а) Langaru - 29.3.2018, 17:39
PM MAIL   Вверх
Langaru
Дата 30.3.2018, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 2.9.2009

Репутация: нет
Всего: нет



Протестировал на 13 разных компах - нигде не работает.
Можно пример работающего файла, чтобы от него плясать?


Всё, окончательно запутался. Но работает.
Запустил этот файл через Libre Calc, он мне выдал связи с какими то файлами (эксель утверждал, что ничего нет). Грохнул все связи. Переоткрыл в экселе из проводника - всё работает.
Запускаю тот же файл из UnrealComander - не работает. Закрываю, открываю из проводника - работает. Эксель только 1. Всегда открывается в нём.
Объяснения не нашёл.

Всем благодарности. Тему можно закрывать.

Это сообщение отредактировал(а) Langaru - 30.3.2018, 14:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1353 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.