如何在Excel VBA中使用GetValue函数解决运行时错误?

如何在Excel VBA中使用GetValue函数解决运行时错误?,vba,excel,function,getvalue,Vba,Excel,Function,Getvalue,我试图编写一个宏,将多个外部工作簿中的数据按一定顺序复制到单个工作簿中。我不想让我的宏打开每个工作簿,因为打开的电子表格太多了,所以我在谷歌上搜索了一下,发现了这个漂亮的函数,GetValue函数: 为了让自己准备好剩下的代码,我编写了一个代码,该代码只需从外部工作簿的一个单元格中提取一段数据,然后将其放入当前工作簿和工作表的一个单元格中。在当前工作表中,我将要访问的工作簿的文件路径粘贴到B列中,并将文件名粘贴到A列中,因为有太多的工作簿,我希望能够在单个代码中访问每一个工作簿。这是代码: S

我试图编写一个宏,将多个外部工作簿中的数据按一定顺序复制到单个工作簿中。我不想让我的宏打开每个工作簿,因为打开的电子表格太多了,所以我在谷歌上搜索了一下,发现了这个漂亮的函数,GetValue函数:

为了让自己准备好剩下的代码,我编写了一个代码,该代码只需从外部工作簿的一个单元格中提取一段数据,然后将其放入当前工作簿和工作表的一个单元格中。在当前工作表中,我将要访问的工作簿的文件路径粘贴到B列中,并将文件名粘贴到A列中,因为有太多的工作簿,我希望能够在单个代码中访问每一个工作簿。这是代码:

Sub Gather_Data()

Dim p As String
Dim f As String
Dim s As String
Dim a As String

p = Range("B7").Value
f = Range("A7").Value
s = Sheet5
a = D7

Cells(10, 10).Value = GetValue(p, f, s, a).Value

End Sub

Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
Dim arg As String
'   Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
'   Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function

区域,我甚至没有写。如果任何人有使用此功能的经验或知道如何解决此错误,您的输入将不胜感激。提前谢谢

您的变量声明为字符串,因此请尝试从以下内容更改代码:

s = Sheet5
a = D7
为此:

s = "Sheet5"
a = "D7"

非常感谢。我应该能自己嗅到的…哎呀。
s = "Sheet5"
a = "D7"