Каталог, в котором размещено решение 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