我正在尝试编写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()作为宏运行,但是当我尝试直接在Excel单元格中使用GetValue(...)作为自定义VBA函数时,它不起作用。看来就行了
GetValue = ExecuteExcel4Macro(arg)
无法执行。
有谁知道怎么解决这个问题?我正在使用Excel 2010.
答案 0 :(得分:0)
据我所知,函数ExecuteExcel4Macro未定义。但可能有一种更简单的方法。 尝试打开包含令人遗憾的值的工作簿。 E.g。
tempWb as workbook
dim testValue
set tempWb = application.workbooks.open(path)
testValue = tempWb.sheets(1).cells(1,1)
路径可以像你的例子那样传递。