ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Access closed workbook range in Custom functions (https://www.excelbanter.com/excel-programming/303502-access-closed-workbook-range-custom-functions.html)

agarwaldvk[_4_]

Access closed workbook range in Custom functions
 
I have written a custom function (which I eventually want to make as a
AddIn) - one of the argument is a range reference. Seems to work o
when the referred ranges are in any of the open workbooks. But when th
referred workbook is closed, then, it comes up with an error probabl
indicating that it is not able to access the referred range. I can'
understand why. However, all Excel built-in functions, e.g in the SUM(
function are able to do just that.

We know that when the referred range is in a closed w/b, the formul
bar shows the full path of the referred range and the referred value i
read/accessed by the built-in function to give the correct outpu
value. In my case, it doesn't. Can someone help?

The following may help to get to the bottom of the problem tha I a
encountering. Could someone advise me as to what am I supposed to pas
in for the workbook and worksheet reference parameters to access th
referred range in the closed w/b?

I access the range in the closed workbook by using the VBA statement
of the like :-

tempvar
workbooks(referredbooknamewithfullpath).worksheets (referredshee
name).cells(rowref, colref).value

The references to the referred book and sheet names are obtained b
reading the formula as a text string and extracting the relevan
details.

Parts of the codes are shown below :-

This is part of the formula in the formula bar :-

,'D:\Deepak\[Book2.xls]Sheet1'!$B$21:$E$49,

Hence, the value in the variable 'referredbooknamewithpath' i
"D:\Deepak\Book2.xls" and
the value in the variable 'referredsheetname' is "sheet1"

In essence, I am trying to read the value in the cell :-

workbooks("D:\Deepak\Book2.xls").worksheets("sheet 1").cells(rowref
colref).value

I even tried to get this parameter values by using the
range.parent.parent.fullname - for full filename and
range.parent.name - for sheet name

Nothing helped.

Further, when the referred range is in a closed w/b, how can you ste
through the custom function code?


Deepak Agarwa

--
Message posted from http://www.ExcelForum.com


Harlan Grove

Access closed workbook range in Custom functions
 
"agarwaldvk " wrote...
I have written a custom function (which I eventually want to make as an
AddIn) - one of the argument is a range reference. Seems to work ok
when the referred ranges are in any of the open workbooks. But when the
referred workbook is closed, then, it comes up with an error probably
indicating that it is not able to access the referred range. I can't
understand why. However, all Excel built-in functions, e.g in the SUM()
function are able to do just that.


It's not important that you know why. It's only necessary that you know that
this is so. You can't reference closed workbooks except using literal
external reference links, like

'C:\foo\[bar.xls]Junk'!$X$99

in worksheet cell formulas or using the ExecuteExcel4Macro method of the
Application class, and that won't work in functions called as udfs. The only
work-around is creating another Application instance, and calling the
ExecuteExcel4Macro method in that instance.

Also, if you used the same reference syntax in your function as you use in
SUM, you'd find they both either work or both return the same error.

We know that when the referred range is in a closed w/b, the formula
bar shows the full path of the referred range and the referred value is
read/accessed by the built-in function to give the correct output
value. In my case, it doesn't. Can someone help?

....
I access the range in the closed workbook by using the VBA statements
of the like :-

tempvar =
workbooks(referredbooknamewithfullpath).worksheet s(referredsheet
name).cells(rowref, colref).value


The Workbooks collection *ONLY* contains *OPEN* workbooks. If the workbook
is closed, it's not in the Workbooks collection, and there's no way to
reference it within the Excel object model.

This is part of the formula in the formula bar :-

,'D:\Deepak\[Book2.xls]Sheet1'!$B$21:$E$49,

....

In the formula bar this resolves to the values in that 'range' returned as
an *ARRAY*. Strictly speaking, it's not a range, and there are no range
objects in closed files. It's an object oriented version of a tree falling
in a forest with no one around to hear.

There is *NO* equivalent in VBA to this cell formula syntax for references
into closed workbooks. There should be, but there just isn't.

See

http://j-walk.com/ss/excel/tips/tip82.htm




All times are GMT +1. The time now is 12:51 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com