Команда оболочки VBA с переменными и пробелами - PullRequest
0 голосов
/ 25 марта 2019

В макросе Microsoft Outlook я пытаюсь использовать вызов Shell (), чтобы открыть электронную таблицу Excel (путь к файлу которой указан в моей переменной templatePath).Я продолжаю получать синтаксические ошибки из редактора и ошибки «файл не найден» при его выполнении.

Я начал со следующей строки:

Shell ("""C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE"" ""C:\Users\My_Username\Desktop\My_Folder\Request Template.xlsx"""), vbNormalFocus

Он просто открывает соответствующий файл;Я просто не знаю правильный синтаксис для использования переменной templatePath вместо жесткого кодирования пути к электронной таблице.Я видел подобные вопросы, но ни один из них не подходил под мою ситуацию достаточно близко.Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 25 марта 2019

Это должно работать:

Dim templatePath As String

templatePath = "C:\Users\My_Username\Desktop\My_Folder\RequestTemplate.xlsx"

Shell ("""C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE"" """ & templatePath & """"), vbNormalFocus

Если ваш шаблон находится в Application.TemplatesPath, и вы просто хотите указать файл name , используйте:

templatePath = Application.TemplatesPath & "RequestTemplate.xlsx"

Более регулируемая версия:

Dim templatePath As String
Dim programPath As String
Dim templateName As String

templateName = "RequestTemplate.xlsx"
templatePath = Application.TemplatesPath
programPath = "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE"

Shell ("""" & programPath & """" & " " & """" & templatePath & templateName & """"), vbNormalFocus
...