2

我正在尝试编写一个 VBA 函数,以便可以访问已关闭的 Excel 工作簿的单元格值。我在网上发现可以写一个这样的宏例程:

Public Sub TestGetValue()

    p = "C:\Users\Jake\Desktop"
    f = "TestSample.xlsx"
    s = "Sheet1"
    a = "B10"

    Call GetValue(p, f, s, a)
    x = GetValue(p, f, s, a)
    MsgBox x 
  
End Sub

Public 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

我可以将其TestGetValue()作为宏运行,但是当我尝试GetValue()直接在 Excel 单元格中用作自定义 VBA 函数时,它不起作用。似乎GetValue = ExecuteExcel4Macro(arg)无法执行该行。

有谁知道如何解决这个问题?我正在使用 Excel 2010。

4

1 回答 1

0

据我所知,该功能ExecuteExcel4Macro未定义。但可能还有更简单的方法。尝试打开包含所需值的工作簿。例如

Dim tempWb As Workbook
Dim testValue

Set tempWb = Application.Workbooks.Open(path)
testValue = tempWb.Sheets(1).Cells(1,1)

路径可以像您的示例一样传递。

于 2013-11-12T14:43:50.480 回答