Я использовал это, чтобы найти лучшие процессы, использующие обработчик файлов для данного пользователя (имя пользователя), где нет доступа к lsof или root:
for pid in `ps -o pid -u username` ; do echo "$(ls /proc/$pid/fd/ 2>/dev/null | wc -l ) for PID: $pid" ; done | sort -n | tail
Вот три возможности для динамической загрузки / вызова DLL из VBA, включая ссылки на соответствующую информацию и некоторый пример кода. Не могу сказать, что мне когда-либо приходилось использовать какое-либо из описанных там решений, но это кажется разумным исследованием вариантов в свете потребности VBA в статическом пути.
Application.Run
для его вызова. Требуется доверенный программный доступ к VBIDE API (т.е. вы позволяете VBA выполнять код, который генерирует код, который затем выполняется ... как это делают макровирусы). LoadLibrary
Win32 API ... и теперь у вас есть указатели и адреса: этот страшный код (загрузка .zip) - это, по сути, огромный неподдерживаемый взлом, который использует сборку язык, чтобы разрешить вызов функций API по имени. Похоже, это работает только для подмножества поддерживаемых функций Win32 API. Вот еще одно возможное решение , которое предлагает программно обновить переменную среды PATH перед вызовом вашей DLL. Неплохая идея, если это сработает, так как вы можете добавить это к событию открытия книги.
Удачи!
zip download) - это, по сути, огромный неподдерживаемый взлом, который использует язык ассемблера для включения вызова функций API по имени. Похоже, это работает только для подмножества поддерживаемых функций Win32 API.Вот еще одно возможное решение , которое предлагает программно обновить переменную среды PATH перед вызовом вашей DLL. Неплохая идея, если это сработает, так как вы можете добавить это к событию открытия книги.
Удачи!
zip download) - это, по сути, огромный неподдерживаемый взлом, который использует язык ассемблера для включения вызова функций API по имени. Похоже, это работает только для подмножества поддерживаемых функций Win32 API.Вот еще одно возможное решение , которое предлагает программно обновить переменную среды PATH перед вызовом вашей DLL. Неплохая идея, если это сработает, так как вы можете добавить это к событию открытия книги.
Удачи!
но тогда также требует добавления динамического кода во время выполнения, так что можно также пойти с вышеупомянутым.Вот другое потенциальное решение , которое предлагает программное обновление переменной среды PATH до для вызова вашей DLL. Неплохая идея, если это сработает, так как вы можете добавить это к событию открытия книги.
Удачи!
но тогда также требует добавления динамического кода во время выполнения, так что можно также пойти с вышеупомянутым.Вот другое потенциальное решение , которое предлагает программное обновление переменной среды PATH до для вызова вашей DLL. Неплохая идея, если это сработает, так как вы можете добавить это к событию открытия книги.
Удачи!
Вы можете поместить DLL в какой-нибудь каталог и добавить ее в путь EnVar.
ActiveWorkbook.Path
дает вам полный путь к папке, содержащей текущую активную книгу. Итак, попробуйте следующее:
Declare Sub FortranCall Lib ActiveWorkbook.Path & "\Fcall.dll" (r1 As Long, ByVal num As String)