Excel 如何让shell函数读取变量中的值而不是VBA中的变量名?
这个问题与我试图在Excel中实现的宏有关,特别是代码中的shell函数。代码的作用是执行chrome.exe,在文档的特定页面中打开一个PDF文件,代码不是我的,它来自本文: () 这就是我的问题所在:Excel 如何让shell函数读取变量中的值而不是VBA中的变量名?,excel,vba,variables,Excel,Vba,Variables,这个问题与我试图在Excel中实现的宏有关,特别是代码中的shell函数。代码的作用是执行chrome.exe,在文档的特定页面中打开一个PDF文件,代码不是我的,它来自本文: () 这就是我的问题所在: Dim arch As String arch = "file:///C:\Users\user\Downloads\Trabajo.pdf#page=6" If Not chromePath = "" Then Shell ("&q
Dim arch As String
arch = "file:///C:\Users\user\Downloads\Trabajo.pdf#page=6"
If Not chromePath = "" Then
Shell ("""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" ""arch""")
End If
我真正需要它做的是,shell函数打开chrome.exe并转到存储在变量arch中的路径
在发布的代码中,其工作方式如下:
Shell ("""C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" ""file:///C:\Users\user\Downloads\Trabajo.pdf#page=6""")
我把PDF路径变成了一个变量,因为它在我交付包含excel文档和PDF的文件夹的每台电脑上都会改变
我已经设法让PDF路径被读取并放入变量arch中。
我觉得有点尴尬,因为这可能是一个非常愚蠢的问题。提前非常感谢。将变量括在引号内将其转换为一个。您只需在半秒钟内查看它,就可以知道您的变量无法工作,因为您甚至没有将变量与字符串文字连接起来(例如
“MyString”&MyVar
)
另外,您不需要将Shell
参数括在括号内,因为您不使用它返回值,在VBA中这样做通常不是好的做法
不管怎样,这里我将向你们展示几种方法。首先是你的多双引号环境风格:
Shell """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" " & """" & arch & """"
注意,我必须将变量与&
组合到字符串中
而且使用Chr$()
功能更容易阅读:
Shell Chr$(34) & "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe " & _
Chr$(34) & arch & Chr$(34)
Chr$(34)
是双引号字符的字符代码。这样可以更容易地将包含实际双引号字符的字符串包围起来
使用双引号时要记住的事项:
Shell """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" " & """" & arch & """"
“
将打开或关闭字符串文本“
将表示一个“空”字符串(x=”“
)“
之后和最后一个之前添加空格来更改上述字符串,例如:
MsgBox " ""This is a string"" "
如果不给您一个语法错误,这是行不通的:
MsgBox "" "This is a string" ""
这是因为第一个打开字符串,第二个是转义字符。但它除了一个空间外什么也逃不掉(反过来也是如此)
然后您可以使用4个“”
,就像和
现在,您可以直观地看到为什么只需4个“
就可以将单个”
单独放入字符串文本中
& """" & arch & """"
' ^^ ^
' || |_ Ends the string
' ||
' ||_ Escapes the next "
' |
' |_ Starts the string