ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VBA: selecting sheets and copy them to a workbook (https://www.excelbanter.com/excel-programming/315389-vba-selecting-sheets-copy-them-workbook.html)

Stephan Otto

VBA: selecting sheets and copy them to a workbook
 
Hello everybody,

I would like to select some sheets and copy them to a different workbook. If
I use the following it works fine:

....
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy
....

But the problem is, that I must have the array in a different way. The
sheets, that must be copied, are always different. I need something like:


Dim mysheets As ???
....
mysheets(0) = "Sheet1"
mysheets(1) = "Sheet2"
mysheets(2) = "Sheet3"
....
Sheets(mysheets).Select
Sheets(mysheets).Copy
....

But I don't get it. What kind of variable must I use? Variant doesn't work.
Neither does Dim mysheets() As String.

Thanks in advance,
Stephan


--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite

Tom Ogilvy

selecting sheets and copy them to a workbook
 
How do you decide which sheets

Variant does work

Sub copysheets()
Dim list As Variant
ReDim list(0 To 2)
list(0) = "Sheet1"
list(1) = "Sheet2"
list(2) = "Sheet3"
Sheets(list).Copy

End Sub

worked fine for me. (also, no need to select them first).

If you are copying all sheets, then you can do

worksheets.copy

--
Regards,
Tom Ogilvy



"Stephan Otto" wrote in message
...
Hello everybody,

I would like to select some sheets and copy them to a different workbook.

If
I use the following it works fine:

...
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy
...

But the problem is, that I must have the array in a different way. The
sheets, that must be copied, are always different. I need something like:


Dim mysheets As ???
...
mysheets(0) = "Sheet1"
mysheets(1) = "Sheet2"
mysheets(2) = "Sheet3"
...
Sheets(mysheets).Select
Sheets(mysheets).Copy
...

But I don't get it. What kind of variable must I use? Variant doesn't

work.
Neither does Dim mysheets() As String.

Thanks in advance,
Stephan


--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite




Stephan Otto

selecting sheets and copy them to a workbook
 
Tom Ogilvy schrieb:

How do you decide which sheets


By reading a specific column. All sheets, that are mentioned in that column,
should be copied...

Variant does work

Sub copysheets()
Dim list As Variant
ReDim list(0 To 2)
list(0) = "Sheet1"
list(1) = "Sheet2"
list(2) = "Sheet3"
Sheets(list).Copy

End Sub

worked fine for me. (also, no need to select them first).


Thanks, I will try it this evening. This computer runs Linux...

--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite

Tom Ogilvy

selecting sheets and copy them to a workbook
 
As long as there will be at least two adjacent cells with sheet names:

Sub Copysheets1()
Dim varr As Variant
Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(1, 1).End(xlDown))
varr = Application.Transpose(rng)
Debug.Print LBound(varr, 1), UBound(varr, 1)
Sheets(varr).Copy
End Sub

--
Regards,
Tom Ogilvy

"Stephan Otto" wrote in message
...
Tom Ogilvy schrieb:

How do you decide which sheets


By reading a specific column. All sheets, that are mentioned in that

column,
should be copied...

Variant does work

Sub copysheets()
Dim list As Variant
ReDim list(0 To 2)
list(0) = "Sheet1"
list(1) = "Sheet2"
list(2) = "Sheet3"
Sheets(list).Copy

End Sub

worked fine for me. (also, no need to select them first).


Thanks, I will try it this evening. This computer runs Linux...

--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite




Stephan Otto

selecting sheets and copy them to a workbook
 
Thank you. As I told you, I will try it this evening...


Tom Ogilvy schrieb:

As long as there will be at least two adjacent cells with sheet names:

Sub Copysheets1()
Dim varr As Variant
Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(1, 1).End(xlDown))
varr = Application.Transpose(rng)
Debug.Print LBound(varr, 1), UBound(varr, 1)
Sheets(varr).Copy
End Sub

--
Regards,
Tom Ogilvy

"Stephan Otto" wrote in message
...
Tom Ogilvy schrieb:

How do you decide which sheets


By reading a specific column. All sheets, that are mentioned in that

column,
should be copied...

Variant does work

Sub copysheets()
Dim list As Variant
ReDim list(0 To 2)
list(0) = "Sheet1"
list(1) = "Sheet2"
list(2) = "Sheet3"
Sheets(list).Copy

End Sub

worked fine for me. (also, no need to select them first).


Thanks, I will try it this evening. This computer runs Linux...

--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite


--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite

Stephan Otto

selecting sheets and copy them to a workbook
 
Hi Tom,

this one didn't work. But I used the other one, which you've posted before
This one works very well...

Thanks, Stephan


Tom Ogilvy schrieb:

As long as there will be at least two adjacent cells with sheet names:

Sub Copysheets1()
Dim varr As Variant
Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(1, 1).End(xlDown))
varr = Application.Transpose(rng)
Debug.Print LBound(varr, 1), UBound(varr, 1)
Sheets(varr).Copy
End Sub

--
Regards,
Tom Ogilvy

"Stephan Otto" wrote in message
...
Tom Ogilvy schrieb:

How do you decide which sheets


By reading a specific column. All sheets, that are mentioned in that

column,
should be copied...

Variant does work

Sub copysheets()
Dim list As Variant
ReDim list(0 To 2)
list(0) = "Sheet1"
list(1) = "Sheet2"
list(2) = "Sheet3"
Sheets(list).Copy

End Sub

worked fine for me. (also, no need to select them first).


Thanks, I will try it this evening. This computer runs Linux...

--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite


--
--
http://www.reparco.com - Die kostenlose, persönliche Startseite


All times are GMT +1. The time now is 11:55 AM.

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