作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题与我试图在 Excel 中实现的宏有关,特别是代码中的 shell 函数。代码的作用是执行 chrome.exe 在文档的特定页面中打开 PDF 文件,代码不是我的,它来自这篇文章:
(Open a PDF from Excel with VBA in Google Chrome on a specific page)
这就是我遇到问题的地方:
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 路径变成了一个变量,因为它会在每台 PC 上发生变化 我提供包含 excel 文档和 PDF 的文件夹
最佳答案
将变量括在引号中会将其变为 string literal反而。您只需在半秒内查看它就可以知道您的变量不起作用,因为您甚至没有将变量与字符串文字连接起来(例如 "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)
是双引号字符的字符代码。这可以更容易地包围其中包含实际双引号字符的字符串。
"
将打开或关闭字符串文字 ""
将表示一个“空”字符串 ( x = ""
) MsgBox """This is a string"""
' ^^ ^ ^
' ||_ | |_ This closes (terminates) the string literal
' | | |
' | | |_This one is acting as an escape to the next "
' | |
' | |_This is escaping the next character
' |
' |_This is the start of the string literal
这可以验证,因为您可以通过在第一个
"
之后添加一个空格来更改上述字符串。在最后一个之前,例如:
MsgBox " ""This is a string"" "
虽然如果不给您语法错误,这将无法工作:
MsgBox "" "This is a string" ""
这是因为第一个打开字符串,第二个是转义字符。但它只是逃避一个空间(反过来也是如此)。
""""
, 与
& """" & arch & """"
一样
& """" & arch & """"
' ^^ ^
' || |_ Ends the string
' ||
' ||_ Escapes the next "
' |
' |_ Starts the string
现在您可以直观地看到为什么需要 4
"
只是放一个
"
本身变成一个字符串文字。
关于excel - 如何让 shell 函数读取变量中的值而不是 VBA 中的变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63641377/
我是一名优秀的程序员,十分优秀!