build array of sheet names and copy to new workbook

TryingToLearn

Well-known Member
Joined
Sep 10, 2003
Messages
730
Data entry workbook creates sheets with 1st 3 letters of the month then additional info. After data entry is complete, I'm trying to copy the worksheets for that month to a new workbook.

Got as far as creating an array with the correct sheet names but can't seem to get the syntax to copy to new workbook.

Code:
Sub rptCopy()
    Dim Mnth As String
    Dim ws As Worksheet
    Dim myarray() As String
    Dim x, N As Integer
    Dim ShName As Variant
    '------------------
    Mnth = InputBox("Month to report (MMM)  i.e. Feb")
    ReDim Preserve myarray(0)
    For Each ws In ThisWorkbook.Worksheets
        If UCase(Left(ws.Name, 3)) = UCase(Mnth) Then
            ReDim Preserve myarray(UBound(myarray) + 1)
            myarray(UBound(myarray)) = ws.Name
            x = x + 1
        End If
    Next
    If x = 0 Then
        MsgBox "No data found for " & Mnth & " report", vbInformation, "DATA NOT FOUND"
        Exit Sub
    End If
For N = 1 To x
Debug.Print myarray(N)
Next
    Sheets(myarray).Copy
End Sub

Also tried Sheets(Array(myarray)).Copy

either case gives error 9 subscript out of range which leads me to believe the sheet names are not in the correct format.

TIA
 
Indeed, especially with '97. Generally speaking, this problem goes away in '00, but I still set this property to False every time. :wink:
 
Upvote 0

Excel Facts

Is there a shortcut key for strikethrough?
Ctrl+S is used for Save. Ctrl+5 is used for Strikethrough. Why Ctrl+5? When you use hashmarks to count |||| is 4, strike through to mean 5.
Hi, I am trying to complete the following based off your code but I don't think I got this correct....ANY help on this would be most appreciated....

What I am trying to do is copy multiple excel workbooks (in particular order) into other excel workbooks (in particular order)

I don't know if I got any part of this correctly but please help correct any part of the code that I got wrong...

testStrArr()
'Dim myArr(1 To 3) As String
Dim myArr(1 To 49) As String
Dim myArr1(50-98) As String
Dim myStr$, ws As Worksheet

myArr(1) = Workbooks("ALLIED PACIFIC OF CALIF*").name
myArr(2) = Workbooks("ALPHA MSO*").name
myArr(3) = Workbooks("AMM*").name
myArr(4) = Workbooks("ANCHOR MEDICAL*").name
myArr(5) = Workbooks("APPLECARE*").name
myArr(6) = Workbooks("AXMINSTER MEDICAL GROUP*").name
myArr(7) = Workbooks("BROWN AND TOLAND*").name
myArr(8) = Workbooks("CALIFORNIA PCP ON PPO*").name
myArr(9) = Workbooks("CHOICE PHYSICIANS NETWK*").name
myArr(10) = Workbooks("CITRUS VALLEY PHYSICIANS GROUP*").name
myArr(11) = Workbooks("COAST*").name
myArr(12) = Workbooks("DIGNITY HEALTH*").name
myArr(13) = Workbooks("EMPIRE PHYSICIANS MEDGRP*").name
myArr(14) = Workbooks("EPIC HEALTH PLAN*").name
myArr(15) = Workbooks("FACEY*").name
myArr(16) = Workbooks("HEALTHCARE PARTNERS*").name
myArr(17) = Workbooks("HEMET COMMUNITY*").name
myArr(18) = Workbooks("HILL PHYSICIANS MEDICAL GROUP*").name
myArr(19) = Workbooks("HISPANIC PHYSICIAN*").name
myArr(20) = Workbooks("JOHN MUIR*").name
myArr(21) = Workbooks("KEY MEDICAL*").name
myArr(22) = Workbooks("MAVERICK*").name
myArr(23) = Workbooks("MCKESSON*").name
myArr(24) = Workbooks("MCKESSON - VALLEY*").name
myArr(25) = Workbooks("MCKESSON - VALLEY CARE SELECT*").name
myArr(26) = Workbooks("MEMORIALCARE*").name
myArr(27) = Workbooks("MID COUNTY*").name
myArr(28) = Workbooks("MONARCH*").name
myArr(29) = Workbooks("NAMM*").name
myArr(30) = Workbooks("OMNI IPA*").name
myArr(31) = Workbooks("PALO ALTO MEDICAL FOUNDATION*").name
myArr(32) = Workbooks("PDTRUST*").name
myArr(33) = Workbooks("SANJOSE*").name
myArr(34) = Workbooks("SANTA CRUZ*").name
myArr(35) = Workbooks("PREFERRED IPA OF CA*).name
myArr(36) = Workbooks("PROSPECT*).name
myArr(37) = Workbooks("RIVERSIDE MEDICAL CLINIC*).name
myArr(38) = Workbooks("RIVERSIDE PHYSICIAN NETWORK*).name
myArr(39) = Workbooks("SAN BERNARDINO MEDICAL GROUP*).name
myArr(40) = Workbooks("SANDIEGO PHYSICIANS MED GRP*).name
myArr(41) = Workbooks("SANTA CLARA COUNTY IPA*).name
myArr(42) = Workbooks("SANTE COMMUNITY PHYS*).name
myArr(43) = Workbooks("SGMF - SAN JOAQUIN*).name
myArr(44) = Workbooks("SUTTER EAST BAY*).name
myArr(45) = Workbooks("SYNERMED*).name
myArr(46) = Workbooks("TORRANCE HOSPITAL IPA*).name
myArr(47) = Workbooks("UCSD MG*).name
myArr(48) = Workbooks("UNIVERSITY HEALTHCARE*).name
myArr(49) = Workbooks("VANTAGE*).name
'myArr(99) = Workbooks("ALLCARE IPA*).name
myArr1(50) = Workbooks("Report-ALLIED PACIFIC OF CALIF*").name
myArr1(51) = Workbooks("Report-ALPHA MSO*").name
myArr1(52) = Workbooks("Report-AMM*").name
myArr1(53) = Workbooks("Report-ANCHOR MEDICAL*").name
myArr1(54) = Workbooks("Report-APPLECARE*").name
myArr1(55) = Workbooks("Report-AXMINSTER MEDICAL GROUP*").name
myArr1(56) = Workbooks("Report-BROWN AND TOLAND*").name
myArr1(57) = Workbooks("Report-CALIFORNIA PCP ON PPO*").name
myArr1(58) = Workbooks("Report-CHOICE PHYSICIANS NETWK*").name
myArr1(59) = Workbooks("Report-CITRUS VALLEY PHYSICIANS GROUP*").name
myArr1(60) = Workbooks("Report-COAST*").name
myArr1(61) = Workbooks("Report-DIGNITY HEALTH*").name
myArr(62) = Workbooks("Report-EMPIRE PHYSICIANS MEDGRP*").name
myArr(63) = Workbooks("Report-EPIC HEALTH PLAN*").name
myArr(64) = Workbooks("Report-FACEY*").name
myArr(65) = Workbooks("Report-HEALTHCARE PARTNERS*").name
myArr(66) = Workbooks("Report-HEMET COMMUNITY*").name
myArr(67) = Workbooks("Report-HILL PHYSICIANS MEDICAL GROUP*").name
myArr(68) = Workbooks("Report-HISPANIC PHYSICIAN*").name
myArr(69) = Workbooks("Report-JOHN MUIR*").name
myArr(70) = Workbooks("Report-KEY MEDICAL*").name
myArr(71) = Workbooks("Report-MAVERICK*").name
myArr(72) = Workbooks("Report-MCKESSON*").name
myArr(73) = Workbooks("Report-MCKESSON - VALLEY*").name
myArr(74) = Workbooks("Report-MCKESSON - VALLEY CARE SELECT*").name
myArr(75) = Workbooks("Report-MEMORIALCARE*").name
myArr(76) = Workbooks("Report-MID COUNTY*").name
myArr(77) = Workbooks("Report-MONARCH*").name
myArr(78) = Workbooks("Report-NAMM*").name
myArr(79) = Workbooks("Report-OMNI IPA*").name
myArr(80) = Workbooks("Report-PALO ALTO MEDICAL FOUNDATION*").name
myArr(81) = Workbooks("Report-PDTRUST*").name
myArr(82) = Workbooks("Report-SANJOSE*").name
myArr(83) = Workbooks("Report-SANTA CRUZ*").name
myArr(84) = Workbooks("Report-PREFERRED IPA OF CA*).name
myArr(85) = Workbooks("Report-PROSPECT*).name
myArr(86) = Workbooks("Report-RIVERSIDE MEDICAL CLINIC*).name
myArr(87) = Workbooks("Report-RIVERSIDE PHYSICIAN NETWORK*).name
myArr(88) = Workbooks("Report-SAN BERNARDINO MEDICAL GROUP*).name
myArr(89) = Workbooks("Report-SANDIEGO PHYSICIANS MED GRP*).name
myArr(90) = Workbooks("Report-SANTA CLARA COUNTY IPA*).name
myArr(91) = Workbooks("Report-SANTE COMMUNITY PHYS*).name
myArr(92) = Workbooks("Report-SGMF - SAN JOAQUIN*).name
myArr(93) = Workbooks("Report-SUTTER EAST BAY*).name
myArr(94) = Workbooks("Report-SYNERMED*).name
myArr(95) = Workbooks("Report-TORRANCE HOSPITAL IPA*).name
myArr(96) = Workbooks("Report-UCSD MG*).name
myArr(97) = Workbooks("Report-UNIVERSITY HEALTHCARE*).name
myArr(98) = Workbooks("Report-VANTAGE*).name
'myArr(100) = Workbooks("Report-ALLCARE IPA*).name

x = 0
For Each ws In ThisWorkbook.Worksheets
x = x + 1
End If
Next
For Each ws In Workbooks(myArr).Worksheets
If myStr & ws.Name
Next
Let y = Len(myStr)
If CBool(y) Then _
Workbooks.sheets(myArr).Copy
Workbooks.sheets(myArr1).Paste
End Sub
 
Upvote 0
Nate,

If you have any suggestions, please help ....I added the following after the array...

Set wbA = Array("myArr(1)", "myArr(2)", "myArr(3)", "myArr(4)", "myArr(5)", "myArr(6)", "myArr(7)", "myArr(8)", "myArr(9)", "myArr(10)", "myArr(11)", "myArr(12)" _
, "myArr(13)", "myArr(14)", "myArr(15)", "myArr(16)", "myArr(17)", "myArr(18)", "myArr(19)", "myArr(20)", "myArr(21)" _
, "myArr(22)", "myArr(23)", "myArr(24)", "myArr(25)", "myArr(26)", "myArr(27)", "myArr(28)", "myArr(29)", "myArr(30)" _
, "myArr(31)", "myArr(32)", "myArr(33)", "myArr(34)", "myArr(35)", "myArr(36)", "myArr(37)", "myArr(38)", "myArr(39)" _
, "myArr(40)", "myArr(41)", "myArr(42)", "myArr(43)", "myArr(44)", "myArr(45)", "myArr(46)", "myArr(47)", "myArr(48)" _
, "myArr(49)", "myArr(99)")

Set wbB = Array("myArr(50)", "myArr(51)", "myArr(52)", "myArr(53)", "myArr(54)", "myArr(55)", "myArr(56)", "myArr(57)", "myArr(58)", "myArr(59)", "myArr(60)", "myArr(61)" _
, "myArr(62)", "myArr(63)", "myArr(64)", "myArr(65)", "myArr(66)", "myArr(67)", "myArr(68)", "myArr(69)", "myArr(70)" _
, "myArr(71)", "myArr(72)", "myArr(73)", "myArr(74)", "myArr(75)", "myArr(76)", "myArr(77)", "myArr(78)", "myArr(79)" _
, "myArr(80)", "myArr(81)", "myArr(82)", "myArr(83)", "myArr(84)", "myArr(85)", "myArr(86)", "myArr(87)", "myArr(88)" _
, "myArr(89)", "myArr(90)", "myArr(91)", "myArr(92)", "myArr(93)", "myArr(94)", "myArr(95)", "myArr(96)", "myArr(97)" _
, "myArr(98)", "myArr(100)")
'For x = 1 To wbA.Workbooks.Count
' wbA.Workbooks(x).Copy After:=wbB.Workbooks((2 * x) - 1)
'Next x
'For Each fl In fldr
' Set pointer to first sheet in wbB Array
Set shCopAfter = wbB.Sheets(1)
' loop through the workbooks in wbA Array
For Each sh In wbA.Workbooks
' Copy sheet to wbB Array
sh.Copy Before:=shCopAfter
' If last sheet in book then set shCopyAfter to last sheet
If ActiveSheet.Index >= wbB.Workbooks.Sheets.Count Then
Set shCopAfter = ActiveSheet
Else
' Else set shCopyAfter to the one after the one just copied
Set shCopAfter = wbB.Workbooks.Sheets(ActiveSheet.Index + 1)
End If
Next
'Next fl
MsgBox "All Filter Excel Files are copied to the Excel Slicer Files are Complete. "
 
Upvote 0

Forum statistics

Threads
1,214,979
Messages
6,122,550
Members
449,088
Latest member
davidcom

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top