Каталог, в котором размещено решение Office

Я пытаюсь получить доступ к строке, которая представляет путь к текущему каталогу, в котором было размещено мое приложение. У меня есть шаблоны Excel, созданные в Visual Studio, которые должны заполняться именами файлов в текущем каталоге (который есть в документе были размещены) и его подкаталоги. Я нигде не могу найти решение, которое действительно работает, я нашел несколько попыток найти решение: найти путь к моему.exe и другим, которые не работают. В настоящее время у меня есть пользователь, который вводит желаемый путь, но я хотел бы автоматически найти путь или найти альтернативный способ сбора этих имен.

2 ответа

Решение

Это зависит от того, как вы распространяете свое решение. Надстройки и шаблоны Office, когда они распространяются в стандартном режиме ClickOnce, оказываются в зашифрованной папке (внутри другой зашифрованной папки), которая находится где-то в папке AppData. Вы не сможете использовать обычные способы получения пути к существующему в данный момент приложению, поскольку они, скорее всего, будут возвращать путь к самому EXCEL.EXE. Этот пост SO предоставляет хороший способ получить текущую папку в решениях VSTO.

Кроме того, вы можете рассмотреть возможность использования MSI для распространения вашего шаблона / надстройки. Это более длинный путь и много предостережений, но в итоге вы установите модуль / шаблон в папке Program Files.

Я не так хорошо знаком с C#, но вот что я делаю в VB:



    Dim dir as string = Application.StartupPath

Вы можете сделать то же самое в Excel VBA:



    Dim dir as string = Application.ActiveWorkbook.Path

Другие вопросы по тегам