Краткий ответ: это, вероятно, не стоит усилий.
Более длинный ответ: интерфейсы CFD не расширяют IDispatch, что делает невозможным вызов через позднюю привязку из VBA. Это не означает, что они не могут быть вызваны из VBA, но это означает, что им требуется typelib для описания «формы» основанных на IUnknown интерфейсов CFD. К сожалению, Microsoft не предоставляет определения интерфейса CFD в библиотеке типов. Вы можете свернуть свою собственную библиотеку типов, перепроектировав файлы заголовков (или попытаться найти исходный IDL в SDK), но затем вам нужно будет зарегистрировать эту библиотеку типов на каждой машине, на которой вы хотите ее использовать (инструменты, для которых не поставляются на машине, в отличие от regsvr32 для COM вещи). Предполагая, что вы сделали все это, вы можете ссылаться на typelib из VBA и условно вызывать его в Vista или более поздних ОС. Вы также можете просмотреть небольшую сборку .NET, которая создаст тип, производный от System.Windows.Forms.FileDialog, и перенаправит результаты обратно в VBA, что будет намного проще, но все же более или менее требует регистрации. сборка на каждой машине (или использование C ++ / CLI или других хаков для экспорта управляемой функции DLL), и для этого требуется, чтобы вы взяли зависимость .NET.
Они, конечно, не сделали это легко ... :) Удачи!