gpt4 book ai didi

excel - 如何让 shell 函数读取变量中的值而不是 VBA 中的变量名?

转载 作者:行者123 更新时间:2023-12-04 20:24:24 25 4
gpt4 key购买 nike

问题与我试图在 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 的文件夹
我已经管理了如何获取要读取的 PDF 路径并将其放入变量 arch。
我觉得有点尴尬,因为这可能是一个非常愚蠢的问题。非常感谢您提前。

最佳答案

将变量括在引号中会将其变为 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 = "" )
  • 现在 内一个字符串文字,任何你想成为字符串一部分的引号都需要是 escaped带有另一个双引号字符。

  • 让我们仔细看看第 3 点
    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" ""
    这是因为第一个打开字符串,第二个是转义字符。但它只是逃避一个空间(反过来也是如此)。
    然后你开始使用 4 """" , 与 & """" & arch & """" 一样
    & """" & arch & """"
    ' ^^ ^
    ' || |_ Ends the string
    ' ||
    ' ||_ Escapes the next "
    ' |
    ' |_ Starts the string
    现在您可以直观地看到为什么需要 4 "只是放一个 "本身变成一个字符串文字。

    关于excel - 如何让 shell 函数读取变量中的值而不是 VBA 中的变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63641377/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com