Автоустановка Comdlg32.ocx?
Я хочу распространить электронную таблицу Excel с формой, включающей компонент comdlg32.ocx, в сетевой ресурс.
Пользователи Windows 7, вероятно, не будут иметь этот компонент установлен или зарегистрирован. Есть ли способ автоматически проверить и затем установить этот компонент в Windows 7?
1 ответ
У меня когда-то был какой-то код, который делал что-то вроде
on error goto errhandler
try to instantiate an object of type x
we're not in the error handler - the dll must have already been registered!
continue processing...
exit sub (or whatever)
errhandler:
shell "regsvr.exe /s " & path_to_dll
retry instantiation
Очевидно, что вы захотите избежать попадания в бесконечный цикл, если вызов regsvr завершится неудачно. Плюс я бы не рекомендовал регистрировать dll на сетевом ресурсе; он может быть недоступен при следующем запуске макроса. Попробуйте сначала скопировать его на локальный диск.
Еще одна вещь, которую следует учитывать: вам не следует копировать одну системную DLL, так как они выпускаются в наборах, что может вызвать проблемы с версиями. Однако иногда мне было проще просто рисковать и идти дальше.