Поскольку никто не ответил ... У меня нет личного опыта, хотя я использовал VBA, VB6 и написал библиотеки DLL VB6, которые являются надстройками для других сторонних программ (хотя и не для Office).
Самый простой способ - преобразовать код VBA в надстройку COM VB6. Тогда вам не нужно менять внутренности своего кода, так как VBA на 99% идентичен VB6, и вы можете кодировать для той же объектной модели Office. Вам нужно будет изменить ведение домашнего хозяйства, связывающее вашу надстройку с Office. Вот статья Microsoft MSDN 2002 о том, как писать надстройки Office в VB6.
В качестве альтернативы вы можете перенести VBA в VB.Net в качестве надстройки VSTO . VB.Net полностью поддерживается, тогда как теперь поддерживается только среда выполнения VB6 . Недостатки в том, что это может быть много работы, с новыми вещами, чтобы учиться и покупать . Вам нужно будет использовать обфускатор , иначе ваш код .Net может быть декомпилирован еще проще , чем защищенный паролем VBA.
Прежде чем вы решите, подумайте, сколько пиратов будут атаковать ваш код, насколько плохо будет, если они взломают его, и что мешает им просто копировать ваши двоичные файлы (без декомпиляции)? Правильный ответ может быть просто придерживаться надстроек VBA.