带变量和空格的VBA Shell命令

问题描述 投票:0回答:1

在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变量的正确语法,而不是硬编码电子表格的路径。我已经看到了类似的问题,但似乎没有一个问题足够贴合我的情况。任何帮助将不胜感激!

excel vba shell outlook
1个回答
1
投票

这应该工作:

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中,并且您只想指定文件名,请使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.