Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.excel.worksheetfunctions
external usenet poster
 
Posts: 2
Default getting data from a closed worksheet

Hi

I want a userforn to search for and get data from multiple cells on the same
row of a closed worksheet. Then display the data on the userform, in a
number of labels/textboxes, for the user to review (and if requried, enter
on the active worksheet by the click of a command button). Now the entering
to the active worksheet I can do but its getting the data from the closed
workbook where I am struggling.

Can anyone give me some ideas on how to do this?

Upto now I have been using vlookup to find and enter the data in the active
worksheet and then we delete it if not needed. But with a vlookup in 18
columns this can be a pain. Below are some of the 'vlookups' I use, is there
an easy way to put this same functionality into a userform?

'=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,2,FALSE)'

'=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,12,FALSE)'

Kind Regards and thanks in advance for any help




  #2   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.excel.worksheetfunctions
external usenet poster
 
Posts: 9
Default getting data from a closed worksheet

www.butterflysystems.co.uk ha scritto:
Hi

I want a userforn to search for and get data from multiple cells on the same
row of a closed worksheet.

[CUT]
Upto now I have been using vlookup to find and enter the data in the active
worksheet and then we delete it if not needed. But with a vlookup in 18
columns this can be a pain. Below are some of the 'vlookups' I use, is there
an easy way to put this same functionality into a userform?

'=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,2,FALSE)'


As long as the workbook is closed, you could use ADO.
Search (in VBA project references) for the microsoft activex data object
library. You'll get the "ADODB" resources.
You have to use a bit of SQL, though.
Search the internet for the "connection string" to get to your closed
xls file.

bye
--
Guldo
www.giapponegiappone.it
Powered by Debian Sid
  #3   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.excel.worksheetfunctions
external usenet poster
 
Posts: 3
Default getting data from a closed worksheet

Alternately, you could create an autoexec VBA subprocedure to open the
file, update the spreadsheet, then close the file.

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default getting data from a closed worksheet


A 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 linked
files.
This tip contains a VBA function that retrieves a value from a closed
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 the
function with the appropriate arguments. The Sub procedure below
demonstrates. It simply displays the value in cell A1 in Sheet1 of a
file named 99Budget.xls, located in the XLFiles\Budget directory on
drive C:.
Sub TestGetValue()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
a = "A1"
MsgBox GetValue(p, f, s, a)
End Sub
Another example is shown below. This procedure reads 1,200 values (100
rows and 12 columns) from a closed file, and places the values into the
active worksheet.
Sub TestGetValue2()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub
Caveat
In order for this function to work properly, a worksheet must be active
in Excel. It will generate an error if all windows are hidden, or if the
active sheet is a Chart sheet.


--
pspyve
------------------------------------------------------------------------
pspyve's Profile: http://www.excelforum.com/member.php...o&userid=30656
View this thread: http://www.excelforum.com/showthread...hreadid=503068

  #5   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.excel.worksheetfunctions
external usenet poster
 
Posts: 733
Default getting data from a closed worksheet

www.butterflysystems.co.uk wrote...
....
Upto now I have been using vlookup to find and enter the data in the active
worksheet and then we delete it if not needed. But with a vlookup in 18
columns this can be a pain. Below are some of the 'vlookups' I use, is there
an easy way to put this same functionality into a userform?

'=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,2,FALSE)'

'=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,12,FALSE)'


References into closed workbooks result in arrays of the values stored
in those ranges, and Excel seems to cache such arrays, which can cause
problems. So the main thing to do is pull as little as you need from
closed workbooks, and avoid repeated operations on the same data in
closed files.

If your results are 11 columns in order, 2nd through 12th, then use
array formulas to perform the lookup once. For example, if you pulled
these columns into B15:L15 for the values in the other workbook
corresponding to the value in A15, use the array formula

B15:L15:
=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$1:$65536,
{2,3,4,5,6,7,8,9,10,11,12},0)

This reduces the processing, but still pulls in LOTS of data. That
could be reduced by restricting your lookup table to just the columns
needed,

B15:L15:
=VLOOKUP(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$A:$L,
{2,3,4,5,6,7,8,9,10,11,12},0)

Even that could be reduced by using another cell to hold a MATCH call.

M15:
=MATCH(A15,'J:\rev_accs\[CSPost2003.xls]CBNW'!$A:$A,0)

B15:L15:
=IF(M15<=16384,INDEX('J:\rev_accs\[CSPost2003.xls]CBNW'!$B$1:$L$16384,M15,0),
IF(M15<=32768,INDEX('J:\rev_accs\[CSPost2003.xls]CBNW'!$B$16385:$L$32768,M15,0),
IF(M15<=49152,INDEX('J:\rev_accs\[CSPost2003.xls]CBNW'!$B$32769:$L$49152,M15,0),
INDEX('J:\rev_accs\[CSPost2003.xls]CBNW'!$B$49153:$L$65536,M15,0))))

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Vlookup From Closed Worksheet Jeremy Excel Discussion (Misc queries) 5 April 8th 08 06:45 PM
CAN I IMPORT DATA FROM A CLOSED FILE TO A NEW WORKSHEET Paul Excel Discussion (Misc queries) 1 January 11th 07 02:30 PM
unhide columns after worksheet was closed cheryl_phillips Excel Discussion (Misc queries) 3 November 28th 06 05:59 PM
Links to closed worksheet yanf7 Excel Worksheet Functions 0 July 31st 06 04:06 PM
Copy Worksheet from closed book. Saurjusa Excel Programming 2 November 10th 05 05:49 PM


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"