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

时间:2017-06-22 19:40:19

标签: excel vba excel-vba function getvalue

我正在尝试编写一个宏,它将数据从多个外部工作簿按特定顺序复制到单个工作簿。我不打算让每个工作簿都可以让我的宏工作,因为这将是一个非常多的开放电子表格,所以我做了一个谷歌搜索并遇到了这个漂亮的函数,GetValue函数: http://spreadsheetpage.com/index.php/tip/a_vba_function_to_get_a_value_from_a_closed_file/

为了让自己为代码的其余部分做好准备,我创建了一个代码,该代码应该只是从外部工作簿的单元格中获取单个数据,并将其放在工作簿和工作表的单个单元格中我目前正在使用。在当前的工作表中,我将要访问的工作簿的文件路径粘贴到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

我没有看到代码有什么问题,但每当我尝试运行它时,我都会遇到一个运行时错误,指出“对象'_Global'的方法'范围'失败了”。老实说,我不知道这意味着什么,运行调试器会突出显示

    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)

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

1 个答案:

答案 0 :(得分:0)

您的变量声明为String,因此请尝试从此处更改代码:

s = Sheet5
a = D7

对此:

s = "Sheet5"
a = "D7"