Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

Code seems to be okay until the first copy line which errors out in yellow.

Opens the four "state named" workbooks okay.

This line, one line up from error line shows lCol4 = 10 when cursor is hovered over it, which is correct.

Set rangeJ = Range("J1:J" & lCol4)

Is my syntax wrong with the copy lines?

Thanks.
Howard


Option Explicit

Sub MondayMornCopy()

'Idaho, Montana, Wyoming, Nebraska
Dim Idaho As Workbook, Montana As Workbook, Wyoming As Workbook, Nebraska As Workbook
Dim lCol1 As Long, lCol2 As Long, lCol3 As Long, lCol4 As Long
Dim rangeA As Range, rangeD As Range, rangeF As Range, rangeJ As Range
Dim copyArr As Variant
Dim i As Long

Workbooks.Open Filename:= _
"C:\Users\Howard Kittle\Documents\Idaho.xlsm"
Workbooks.Open Filename:= _
"C:\Users\Howard Kittle\Documents\Montana.xlsm"
Workbooks.Open Filename:= _
"C:\Users\Howard Kittle\Documents\Wyoming.xlsm"
Workbooks.Open Filename:= _
"C:\Users\Howard Kittle\Documents\Nebraska.xlsm"

lCol1 = Cells(Rows.Count, 1).End(xlUp).Row
lCol2 = Cells(Rows.Count, 4).End(xlUp).Row
lCol3 = Cells(Rows.Count, 6).End(xlUp).Row
lCol4 = Cells(Rows.Count, 10).End(xlUp).Row

Application.ScreenUpdating = False

copyArr = Array(Idaho, Montana, Wyoming, Nebraska)
For i = LBound(copyArr) To UBound(copyArr)

With copyArr(i)
Set rangeA = Range("A1:A" & lCol1)
Set rangeD = Range("D1:D" & lCol2)
Set rangeF = Range("F1:F" & lCol3)
Set rangeJ = Range("J1:J" & lCol4)

Workbooks("Master.xlsm").Sheets("Sheet1").Range("A " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeA
Workbooks("Master.xlsm").Sheets("Sheet1").Range("D " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeD
Workbooks("Master.xlsm").Sheets("Sheet1").Range("F " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeF
Workbooks("Master.xlsm").Sheets("Sheet1").Range("J " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeJ

copyArr(i).Save
copyArr(i).Close
End With

Next
Application.ScreenUpdating = True
End Sub

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,872
Default Open four Wbooks, copy four columns from each to Master Wbook

Hi Howard,

Am Sun, 1 Dec 2013 23:51:19 -0800 (PST) schrieb Howard:

With copyArr(i)
Set rangeA = Range("A1:A" & lCol1)


you did not refer to a sheet.

Try:

Sub MondayMornCopy2()

Dim lCol1 As Long, lCol2 As Long, lCol3 As Long, lCol4 As Long
Dim rangeA As Variant, rangeD As Variant, rangeF As Variant, rangeJ As
Variant
Dim copyArr As Variant
Dim i As Long

Const myPath = "C:\Users\Howard Kittle\Documents\"
copyArr = Array("Idaho", "Montana", "Wyoming", "Nebraska")

Application.ScreenUpdating = False

For i = LBound(copyArr) To UBound(copyArr)
Workbooks.Open myPath & copyArr(i) & ".xlsm"
With ActiveWorkbook.Sheets("Sheet1")
lCol1 = .Cells(.Rows.Count, 1).End(xlUp).Row
lCol2 = .Cells(.Rows.Count, 4).End(xlUp).Row
lCol3 = .Cells(.Rows.Count, 6).End(xlUp).Row
lCol4 = .Cells(.Rows.Count, 10).End(xlUp).Row

rangeA = .Range("A1:A" & lCol1)
rangeD = .Range("D1:D" & lCol2)
rangeF = .Range("F1:F" & lCol3)
rangeJ = .Range("J1:J" & lCol4)

Workbooks("Master.xlsm").Sheets("Sheet1") _
.Range("A" & Rows.Count).End(xlUp)(2).Resize(rowsize:=lCol1) =
rangeA
Workbooks("Master.xlsm").Sheets("Sheet1") _
.Range("D" & Rows.Count).End(xlUp)(2).Resize(rowsize:=lCol2) =
rangeD
Workbooks("Master.xlsm").Sheets("Sheet1") _
.Range("F" & Rows.Count).End(xlUp)(2).Resize(rowsize:=lCol3) =
rangeF
Workbooks("Master.xlsm").Sheets("Sheet1") _
.Range("J" & Rows.Count).End(xlUp)(2).Resize(rowsize:=lCol4) =
rangeJ
ActiveWorkbook.Close savechanges:=True
End With
Next
Application.ScreenUpdating = True
End Sub


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook


That works very nicely.

With this...

With copyArr(i)
Set rangeA = Range("A1:A" & lCol1)
you did not refer to a sheet.


I thought copyArr(i) would be the first sheet in the array, Idaho, and that rangeA had been set to that sheet what I wanted to copy, and the second time it would be the same with Montana etc.

But cannot argue with the success of your code.

This is new to me:

..Resize(rowsize:=lCol1) = rangeA

Resize I understand in some other uses, but the .Resize(rowsize: puzzles me.

Unless to explain it is brief, I will study it off forum and google.

Thanks, Claus.

Howard
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook


One more question, please.

I see code that the four workbooks are opened, but I see nothing that closes them. After the code runs those books are not open...?

Howard
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,872
Default Open four Wbooks, copy four columns from each to Master Wbook

Hi Howard,

Am Mon, 2 Dec 2013 03:23:53 -0800 (PST) schrieb Howard:

.Resize(rowsize:=lCol1) = rangeA


you see that I declared rangeA as variant.
The code reads the values of the range in this array and therefore I
have to resize the output range for the count of rows (the count of
items into this array)


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,872
Default Open four Wbooks, copy four columns from each to Master Wbook

Hi Howard,

Am Mon, 2 Dec 2013 03:30:30 -0800 (PST) schrieb Howard:

I see code that the four workbooks are opened, but I see nothing that closes them. After the code runs those books are not open...?


the opened workbook is always the active workbook. And after writing the
values to "Master" there is the code line:
ActiveWorkbook.Close savechanges:=True
When the code is through only "Master" is open.


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 3:34:45 AM UTC-8, Claus Busch wrote:
Hi Howard,



Am Mon, 2 Dec 2013 03:30:30 -0800 (PST) schrieb Howard:



I see code that the four workbooks are opened, but I see nothing that closes them. After the code runs those books are not open...?




the opened workbook is always the active workbook. And after writing the

values to "Master" there is the code line:

ActiveWorkbook.Close savechanges:=True

When the code is through only "Master" is open.





Regards

Claus B.


I completely overlooked that. Sorry, my bad.

Howard
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 3:31:29 AM UTC-8, Claus Busch wrote:
Hi Howard,



Am Mon, 2 Dec 2013 03:23:53 -0800 (PST) schrieb Howard:



.Resize(rowsize:=lCol1) = rangeA




you see that I declared rangeA as variant.

The code reads the values of the range in this array and therefore I

have to resize the output range for the count of rows (the count of

items into this array)





Regards

Claus B.


Okay, thanks. I'll need to make some notes to myself on that, plus some study time.

Howard
  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,872
Default Open four Wbooks, copy four columns from each to Master Wbook

Hi Howard,

Am Mon, 2 Dec 2013 04:12:42 -0800 (PST) schrieb Howard:

I'll need to make some notes to myself on that, plus some study time.


may I write comments next time?


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,872
Default Open four Wbooks, copy four columns from each to Master Wbook

Hi Howard,

Am Mon, 2 Dec 2013 04:12:42 -0800 (PST) schrieb Howard:

I'll need to make some notes to myself on that, plus some study time.


with a second loop the code will be more compact:

Sub MondayMornCopy3()

Dim LRow As Long 'Last row
Dim varCol As Variant 'Array of columns
Dim varOut As Variant 'Array of data
Dim copyArr As Variant 'Array of workbooks
Dim i As Long 'Counter for workbook array
Dim j As Integer 'Counter for columns array

Const myPath = "C:\Users\Howard Kittle\Documents\"
copyArr = Array("Idaho", "Montana", "Wyoming", "Nebraska")
varCol = Array(1, 4, 6, 10)

Application.ScreenUpdating = False

For i = LBound(copyArr) To UBound(copyArr)
Workbooks.Open myPath & copyArr(i) & ".xlsm"
With ActiveWorkbook.Sheets("Sheet1")
For j = LBound(varCol) To UBound(varCol)
LRow = .Cells(.Rows.Count, varCol(j)).End(xlUp).Row
varOut = .Range(.Cells(1, varCol(j)), .Cells(LRow, varCol(j)))
Workbooks("Master.xlsm").Sheets("Sheet1") _
.Cells(Rows.Count, varCol(j)).End(xlUp)(2) _
.Resize(rowsize:=LRow) = varOut
Next j
ActiveWorkbook.Close savechanges:=True
End With
Next i
Application.ScreenUpdating = True
End Sub


Regards
Claus B.
--
Win XP PRof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2


  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default Open four Wbooks, copy four columns from each to Master Wbook

I'm inclined to go a different way when pulling data from more than 1
unopen file. ADODB allows you to pull data in recordsets from closed
workbooks, and so is how I would perform this task.

This approach, of course, requires that the columns in the source files
have headings (field names) that you can use in the SQL statement.
Otherwise, Claus' example is an excellent alternative, IMO!

--
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion



---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www.avast.com

  #12   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 7:33:26 AM UTC-8, Claus Busch wrote:
Hi Howard,



Am Mon, 2 Dec 2013 04:12:42 -0800 (PST) schrieb Howard:



I'll need to make some notes to myself on that, plus some study time.




with a second loop the code will be more compact:



Sub MondayMornCopy3()



Dim LRow As Long 'Last row

Dim varCol As Variant 'Array of columns

Dim varOut As Variant 'Array of data

Dim copyArr As Variant 'Array of workbooks

Dim i As Long 'Counter for workbook array

Dim j As Integer 'Counter for columns array



Const myPath = "C:\Users\Howard Kittle\Documents\"

copyArr = Array("Idaho", "Montana", "Wyoming", "Nebraska")

varCol = Array(1, 4, 6, 10)



Application.ScreenUpdating = False



For i = LBound(copyArr) To UBound(copyArr)

Workbooks.Open myPath & copyArr(i) & ".xlsm"

With ActiveWorkbook.Sheets("Sheet1")

For j = LBound(varCol) To UBound(varCol)

LRow = .Cells(.Rows.Count, varCol(j)).End(xlUp).Row

varOut = .Range(.Cells(1, varCol(j)), .Cells(LRow, varCol(j)))

Workbooks("Master.xlsm").Sheets("Sheet1") _

.Cells(Rows.Count, varCol(j)).End(xlUp)(2) _

.Resize(rowsize:=LRow) = varOut

Next j

ActiveWorkbook.Close savechanges:=True

End With

Next i

Application.ScreenUpdating = True

End Sub





Regards

Claus B.


Well, for what its worth I did indeed think at the beginning of this little project the use of an array inside an array (if that is the way to say it) might be a way to go.

But I could never get beyond thinking it was a way to go.

I'll give this a go, and see if I can make some sense out of the code structure.

Many thanks.
Howard
  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 6:53:21 AM UTC-8, Claus Busch wrote:
Hi Howard,



Am Mon, 2 Dec 2013 04:12:42 -0800 (PST) schrieb Howard:



I'll need to make some notes to myself on that, plus some study time.




may I write comments next time?





Regards

Claus B.


For sure. I take it you mean within the code as to what this line does and why it is important to do such and such etc. I try to google stuff a lot and sometimes there is tons of info and sometimes very little.

That would also be a help to me when I revisit my archived code suggestions of yours and find I don't remember what the code is doing.

And all to the extent you have the time to make the notes, either in the code or following it. As long as it is not a burden to you.

Thanks,
Howard
  #14   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Sunday, December 1, 2013 11:51:19 PM UTC-8, Howard wrote:
Code seems to be okay until the first copy line which errors out in yellow.



Opens the four "state named" workbooks okay.



This line, one line up from error line shows lCol4 = 10 when cursor is hovered over it, which is correct.



Set rangeJ = Range("J1:J" & lCol4)



Is my syntax wrong with the copy lines?



Thanks.

Howard





Option Explicit



Sub MondayMornCopy()



'Idaho, Montana, Wyoming, Nebraska

Dim Idaho As Workbook, Montana As Workbook, Wyoming As Workbook, Nebraska As Workbook

Dim lCol1 As Long, lCol2 As Long, lCol3 As Long, lCol4 As Long

Dim rangeA As Range, rangeD As Range, rangeF As Range, rangeJ As Range

Dim copyArr As Variant

Dim i As Long



Workbooks.Open Filename:= _

"C:\Users\Howard Kittle\Documents\Idaho.xlsm"

Workbooks.Open Filename:= _

"C:\Users\Howard Kittle\Documents\Montana.xlsm"

Workbooks.Open Filename:= _

"C:\Users\Howard Kittle\Documents\Wyoming.xlsm"

Workbooks.Open Filename:= _

"C:\Users\Howard Kittle\Documents\Nebraska.xlsm"



lCol1 = Cells(Rows.Count, 1).End(xlUp).Row

lCol2 = Cells(Rows.Count, 4).End(xlUp).Row

lCol3 = Cells(Rows.Count, 6).End(xlUp).Row

lCol4 = Cells(Rows.Count, 10).End(xlUp).Row



Application.ScreenUpdating = False



copyArr = Array(Idaho, Montana, Wyoming, Nebraska)

For i = LBound(copyArr) To UBound(copyArr)



With copyArr(i)

Set rangeA = Range("A1:A" & lCol1)

Set rangeD = Range("D1:D" & lCol2)

Set rangeF = Range("F1:F" & lCol3)

Set rangeJ = Range("J1:J" & lCol4)



Workbooks("Master.xlsm").Sheets("Sheet1").Range("A " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeA

Workbooks("Master.xlsm").Sheets("Sheet1").Range("D " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeD

Workbooks("Master.xlsm").Sheets("Sheet1").Range("F " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeF

Workbooks("Master.xlsm").Sheets("Sheet1").Range("J " & Rows.Count).End(xlUp)(2) = copyArr(i).rangeJ



copyArr(i).Save

copyArr(i).Close

End With



Next

Application.ScreenUpdating = True

End Sub


  #15   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 9:37:02 AM UTC-8, GS wrote:
I'm inclined to go a different way when pulling data from more than 1

unopen file. ADODB allows you to pull data in recordsets from closed

workbooks, and so is how I would perform this task.



This approach, of course, requires that the columns in the source files

have headings (field names) that you can use in the SQL statement.

Otherwise, Claus' example is an excellent alternative, IMO!



--

Garry


Hi Garry,

I, for sure, know your stuff works well also.

I don't have a clue what ADODB is, and I see SQL a lot, but also don't know what it is either. I might be using it and don't know it.

As you know, I can be in over my head in just about no time with some of this.

I'll keep plugging away and try not to be too frustrating.

Howard



  #16   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,514
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 9:37:02 AM UTC-8, GS wrote:
I'm inclined to go a different way when pulling data from more than
1

unopen file. ADODB allows you to pull data in recordsets from closed

workbooks, and so is how I would perform this task.



This approach, of course, requires that the columns in the source
files

have headings (field names) that you can use in the SQL statement.

Otherwise, Claus' example is an excellent alternative, IMO!



--

Garry


Hi Garry,

I, for sure, know your stuff works well also.

I don't have a clue what ADODB is, and I see SQL a lot, but also
don't know what it is either. I might be using it and don't know it.

As you know, I can be in over my head in just about no time with some
of this.

I'll keep plugging away and try not to be too frustrating.

Howard


Here's a good 'primer' with example code...

http://www.appspro.com/conference/Da...rogramming.zip

--
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion



---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www.avast.com

  #17   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 536
Default Open four Wbooks, copy four columns from each to Master Wbook

On Monday, December 2, 2013 10:00:31 AM UTC-8, GS wrote:
On Monday, December 2, 2013 9:37:02 AM UTC-8, GS wrote:


I'm inclined to go a different way when pulling data from more than


1




unopen file. ADODB allows you to pull data in recordsets from closed




workbooks, and so is how I would perform this task.








This approach, of course, requires that the columns in the source


files




have headings (field names) that you can use in the SQL statement.




Otherwise, Claus' example is an excellent alternative, IMO!








--




Garry






Hi Garry,




I, for sure, know your stuff works well also.




I don't have a clue what ADODB is, and I see SQL a lot, but also


don't know what it is either. I might be using it and don't know it.




As you know, I can be in over my head in just about no time with some


of this.




I'll keep plugging away and try not to be too frustrating.




Howard




Here's a good 'primer' with example code...



http://www.appspro.com/conference/Da...rogramming.zip



--

Garry



Free usenet access at http://www.eternal-september.org

Classic VB Users Regroup!

comp.lang.basic.visual.misc

microsoft.public.vb.general.discussion







---

This email is free from viruses and malware because avast! Antivirus protection is active.

http://www.avast.com


Okay, thanks.

Howard
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
Copy some of selected columns to master sheet sanju[_2_] Excel Programming 3 April 17th 10 09:47 PM
Copy cell (C6) from multiple sheets in a wbook to another workbook [email protected] Excel Programming 2 February 9th 07 10:28 PM
Copy cell (C6) from multiple sheets in a wbook to another workbook [email protected] Excel Programming 0 February 9th 07 03:30 PM
Copy cell (C6) from multiple sheets in a wbook to another workbook [email protected] Excel Programming 0 February 9th 07 03:30 PM
Open and copy all workbook sheets in a folder to a master file [email protected] Excel Discussion (Misc queries) 0 November 2nd 06 04:29 PM


All times are GMT +1. The time now is 08:33 AM.

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

About Us

"It's about Microsoft Excel"