#c# #vba #google-drive-api #gdrive
#c# #vba #google-drive-api #gdrive
Вопрос:
У меня есть приложение Excel VBA, в котором мне требуется доступ к Goggle Drive. Поскольку я не смог найти прямого способа запустить приложение на основе Google API из VBA, я погуглил и нашел следующие два способа запустить любой исполняемый файл через VBA и получить выходные данные в виде строки:
Вызовите консольное приложение C # из VBA
Я протестировал оба метода для запуска обычного двоичного файла c # через VBA, и оба работают как по маслу. Впоследствии я создал консольное приложение на основе Google API на C #. Я опубликовал код и исполняемый файл на github по следующей ссылке:
Приложение командной строки на основе C # Google API
Когда я запускаю gdrive.exe через консоль Windows (cmd.exe ), оно запущено и предоставляет желаемый результат. Однако, когда я пытаюсь запустить его из VBA, я получаю следующую ошибку:
The type initializer for 'gdrive.GoogleDrive' threw an exception.
Это та же ошибка, которая могла бы возникнуть, если бы credential.json отсутствовал в gdrive.exe папка.
Кто-нибудь может помочь мне исправить эту проблему?
Комментарии:
1. Лучший способ — использовать анализатор, такой как wireshark или fiddler, и сравнить заголовки в первом запросе из VBA и c #. Затем сделайте заголовки c # в точности похожими на VBA.
2. Попробуйте создать Chdir в VBA в папке, где находится exe-файл. Смотрите: learn.microsoft.com/en-us/office/vba/language/reference /…
3. Обязательно ли это должен быть VBA? Вы могли бы создать надстройку Excel с помощью C #. Или, если VBA является обязательным, вы могли бы создать activex с помощью C #.
4. @jdweng — Метод сниффера кажется мне сложным. — Я пробовал ChDir, но он все еще не работает.
5. @CetinBasoz У меня очень большая и сложная СУБД на базе VBA, в которой мне нужно проверять ссылки на диски, загружать файлы, скачивать файлы, переименовывать файлы и т.д. Я не уверен, как взаимодействовать с Addin через VBA, у меня нулевой опыт работы с Addin. Хотя это может показаться вариантом на будущее.