У меня когда-то был какой-то код, который делал что-то вроде
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, так как они выпускаются в наборах и могут вызвать проблемы с версиями. Однако иногда мне было проще просто рисковать и идти дальше.