Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 133
Default How to Access a Range in Another Workbook

This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.

I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:

Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange

So in a Model module

Sub Something()

Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")

But I don't know how to finish the line.

I know I'm not asking for clever, only mundane. But if you could help
that would be great.

Thanks,

SteveM
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 37
Default How to Access a Range in Another Workbook

On Nov 19, 9:06 pm, SteveM wrote:
This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.

I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:

Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange

So in a Model module

Sub Something()

Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")

But I don't know how to finish the line.

I know I'm not asking for clever, only mundane. But if you could help
that would be great.

Thanks,

SteveM


Steve,
There may be other ways to do this - I'll tell you how I've dealt with
this in the past, and maybe someone else can chime in as well.
The data structure you're looking for is Names. It contains, among
other things, "named ranges" from a workbook. If the range is in
another workbook, you have to open it, access the range, process it,
then close the workbook. Here's an example:

So in a Model module:

Sub Something()
Dim rng As Range
Dim wb As Workbook
Set wb = Workbooks.Open("C:\FullPathToYourFile\Data.xls")
Set rng = wb.Names("DRange").RefersToRange
'Do useful stuff with rng here, such as display its Address, for
example...
MsgBox rng.Address
wb.Close SaveChanges:=False 'or SaveChanges:=True, depends on
your needs
Set wb = Nothing
Set rng = Nothing
End Sub

It seems to me there should be a less "hackish" way, one that doesn't
keep the other workbook open during the processing? I'm all ears.

Cheers,
-Basilisk96
  #3   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default How to Access a Range in Another Workbook

A caveat - there could be problems if there are global and local references
that use the same name:
http://xldynamic.com/source/xld.Names.html

FWIW - I've not seen another method that does not require the workbook to be
open. Once the workbook is closed, you'll get "object required" run-time
errors if you try to do anything with the rng variable.


"Basilisk96" wrote:

On Nov 19, 9:06 pm, SteveM wrote:
This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.

I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:

Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange

So in a Model module

Sub Something()

Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")

But I don't know how to finish the line.

I know I'm not asking for clever, only mundane. But if you could help
that would be great.

Thanks,

SteveM


Steve,
There may be other ways to do this - I'll tell you how I've dealt with
this in the past, and maybe someone else can chime in as well.
The data structure you're looking for is Names. It contains, among
other things, "named ranges" from a workbook. If the range is in
another workbook, you have to open it, access the range, process it,
then close the workbook. Here's an example:

So in a Model module:

Sub Something()
Dim rng As Range
Dim wb As Workbook
Set wb = Workbooks.Open("C:\FullPathToYourFile\Data.xls")
Set rng = wb.Names("DRange").RefersToRange
'Do useful stuff with rng here, such as display its Address, for
example...
MsgBox rng.Address
wb.Close SaveChanges:=False 'or SaveChanges:=True, depends on
your needs
Set wb = Nothing
Set rng = Nothing
End Sub

It seems to me there should be a less "hackish" way, one that doesn't
keep the other workbook open during the processing? I'm all ears.

Cheers,
-Basilisk96

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 37
Default How to Access a Range in Another Workbook

On Nov 19, 11:49 pm, JMB wrote:
A caveat - there could be problems if there are global and local references
that use the same name:http://xldynamic.com/source/xld.Names.html

FWIW - I've not seen another method that does not require the workbook to be
open. Once the workbook is closed, you'll get "object required" run-time
errors if you try to do anything with the rng variable.


Thanks, that's a handy reference!
  #5   Report Post  
Posted to microsoft.public.excel.programming
JMB JMB is offline
external usenet poster
 
Posts: 2,062
Default How to Access a Range in Another Workbook

quite welcome

"Basilisk96" wrote:

On Nov 19, 11:49 pm, JMB wrote:
A caveat - there could be problems if there are global and local references
that use the same name:http://xldynamic.com/source/xld.Names.html

FWIW - I've not seen another method that does not require the workbook to be
open. Once the workbook is closed, you'll get "object required" run-time
errors if you try to do anything with the rng variable.


Thanks, that's a handy reference!



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default How to Access a Range in Another Workbook

Hi Steve,

See if this helps. Macro is in workbook Model and data is in workbook Data.

It copies from Data workbook to workbook Model:-

Sub test()

Dim wbData As Workbook
Dim wbModel As Workbook
Dim rng As Range

Set wbData = Workbooks("Data.xlsm")
Set wbModel = ThisWorkbook

Set rng = wbData.Sheets("Sheet1").Range("A1:A10")

rng.Copy Destination:=wbModel.Sheets("Sheet1").Range("B1")

End Sub

--
Regards,

OssieMac


"SteveM" wrote:

This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.

I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:

Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange

So in a Model module

Sub Something()

Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")

But I don't know how to finish the line.

I know I'm not asking for clever, only mundane. But if you could help
that would be great.

Thanks,

SteveM

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default How to Access a Range in Another Workbook

Hi again Steve,

My last answer not quite right for your question. You indicated a named
range in Data so use this instead.

Sub test()

Dim wbData As Workbook
Dim wbModel As Workbook
Dim rng As Range

Set wbData = Workbooks("Data.xlsm")
Set wbModel = ThisWorkbook

With wbData.Sheets("Sheet1")
Set rng = .Range("Drange")
End With

rng.Copy Destination:=wbModel.Sheets("Sheet1").Range("B1")

End Sub

--
Regards,

OssieMac


"OssieMac" wrote:

Hi Steve,

See if this helps. Macro is in workbook Model and data is in workbook Data.

It copies from Data workbook to workbook Model:-

Sub test()

Dim wbData As Workbook
Dim wbModel As Workbook
Dim rng As Range

Set wbData = Workbooks("Data.xlsm")
Set wbModel = ThisWorkbook

Set rng = wbData.Sheets("Sheet1").Range("A1:A10")

rng.Copy Destination:=wbModel.Sheets("Sheet1").Range("B1")

End Sub

--
Regards,

OssieMac


"SteveM" wrote:

This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.

I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:

Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange

So in a Model module

Sub Something()

Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")

But I don't know how to finish the line.

I know I'm not asking for clever, only mundane. But if you could help
that would be great.

Thanks,

SteveM

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 133
Default How to Access a Range in Another Workbook

On Nov 19, 9:39 pm, OssieMac
wrote:
Hi again Steve,

My last answer not quite right for your question. You indicated a named
range in Data so use this instead.

Sub test()

Dim wbData As Workbook
Dim wbModel As Workbook
Dim rng As Range

Set wbData = Workbooks("Data.xlsm")
Set wbModel = ThisWorkbook

With wbData.Sheets("Sheet1")
Set rng = .Range("Drange")
End With

rng.Copy Destination:=wbModel.Sheets("Sheet1").Range("B1")

End Sub

--
Regards,

OssieMac

"OssieMac" wrote:
Hi Steve,


See if this helps. Macro is in workbook Model and data is in workbook Data.


It copies from Data workbook to workbook Model:-


Sub test()


Dim wbData As Workbook
Dim wbModel As Workbook
Dim rng As Range


Set wbData = Workbooks("Data.xlsm")
Set wbModel = ThisWorkbook


Set rng = wbData.Sheets("Sheet1").Range("A1:A10")


rng.Copy Destination:=wbModel.Sheets("Sheet1").Range("B1")


End Sub


--
Regards,


OssieMac


"SteveM" wrote:


This seems pretty trivial but it's not clear to me how to do refer to
range object in an external source.


I want to access and use a named Range in a second workbook. I'm
thinking that I can declare a Range variable in my ActiveWorkbook and
set that equal to the external range. So:


Say the primary Workbook is Model.xls and the one I want to access is
Data.xls, and the Data named Range is DRange


So in a Model module


Sub Something()


Dim rng as Range
Set rng = Workbooks("Data.xls")...Range("DRange")


But I don't know how to finish the line.


I know I'm not asking for clever, only mundane. But if you could help
that would be great.


Thanks,


SteveM


Thanks very much guys, but I figured out this single line solution.

Set rng = Workbooks("Data.xls").Sheets("DataSheet").Range("D Range")

Note that the workbook is already open.

SteveM

P.S. I should read the documentation more often :)
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
Linking workbook and range protected Excel sheet to Access richiverse718 Excel Discussion (Misc queries) 0 March 20th 06 11:51 PM
link Access workbook to Excel workbook Toinett Excel Discussion (Misc queries) 1 January 31st 05 03:37 PM
Access closed workbook range in Custom functions agarwaldvk[_5_] Excel Programming 6 July 9th 04 09:33 AM
Access closed workbook range in Custom functions agarwaldvk[_4_] Excel Programming 1 July 8th 04 03:50 AM
Can't access to a WorkBook Jordi Excel Programming 1 November 15th 03 06:24 AM


All times are GMT +1. The time now is 02:45 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"