C
claytorm
Hi,
I want to retrieve values from a specified cell in a closed workbook
Excel seems to let me do this if i open the workbook I am refering to
and this continues to function even if I change the reference afte
closing the referenced worksheet.
However, as I am potentially refering to hundreds of files, it is no
practical to open each sheet I wish to refer to.
Is there a solution whereby I can provide the file path and cel
reference, and have a value returned?
I found a suggested VBA solution (copied below) a
http://j-walk.com/ss/excel/tips/tip82.htm. However, since I don't kno
much about VBA (I'm learning), I couldn't put it to any use. If anyon
could explain it, I'd be most grateful.
Bertie.
VBA Function to Get a Value From a Closed File
VBA does not include a method to retrieve a value from a closed file
You can, however, take advantage of Excel's ability to work with linke
files.
This tip contains a VBA function that retrieves a value from a close
workbook. It does by calling an XLM macro.
Note:
You cannot use this function in a worksheet formula.
The GetValue Function
The GetValue function, listed below takes four arguments:
path: The drive and path to the closed file (e.g., "d:\files")
file: The workbook name (e.g., "99budget.xls")
sheet: The worksheet name (e.g., "Sheet1")
ref: The cell reference (e.g., "C4")
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
Using the GetValue Function
To use this function, copy the listing to a VBA module. Then, call th
function with the appropriate arguments. The Sub procedure belo
demonstrates. It simply displays the value in cell A1 in Sheet1 of
file named 99Budget.xls, located in the XLFiles\Budget directory o
drive C:.
Sub TestGetValue()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
a = "A1"
MsgBox GetValue(p, f, s, a)
End Su
I want to retrieve values from a specified cell in a closed workbook
Excel seems to let me do this if i open the workbook I am refering to
and this continues to function even if I change the reference afte
closing the referenced worksheet.
However, as I am potentially refering to hundreds of files, it is no
practical to open each sheet I wish to refer to.
Is there a solution whereby I can provide the file path and cel
reference, and have a value returned?
I found a suggested VBA solution (copied below) a
http://j-walk.com/ss/excel/tips/tip82.htm. However, since I don't kno
much about VBA (I'm learning), I couldn't put it to any use. If anyon
could explain it, I'd be most grateful.
Bertie.
VBA Function to Get a Value From a Closed File
VBA does not include a method to retrieve a value from a closed file
You can, however, take advantage of Excel's ability to work with linke
files.
This tip contains a VBA function that retrieves a value from a close
workbook. It does by calling an XLM macro.
Note:
You cannot use this function in a worksheet formula.
The GetValue Function
The GetValue function, listed below takes four arguments:
path: The drive and path to the closed file (e.g., "d:\files")
file: The workbook name (e.g., "99budget.xls")
sheet: The worksheet name (e.g., "Sheet1")
ref: The cell reference (e.g., "C4")
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
Using the GetValue Function
To use this function, copy the listing to a VBA module. Then, call th
function with the appropriate arguments. The Sub procedure belo
demonstrates. It simply displays the value in cell A1 in Sheet1 of
file named 99Budget.xls, located in the XLFiles\Budget directory o
drive C:.
Sub TestGetValue()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
a = "A1"
MsgBox GetValue(p, f, s, a)
End Su