Vraag : Combineer Bladen in Werkboek

Ik had werkboek uitblinken dat/>I behoefte 6 worksheets

Sheet A
Sheet B
Sheet C
Sheet D
Sheet E
Combined


I een dossier vastgemaakt zodat u de oorspronkelijke bladen kunt zien en het gecombineerde aantekenvel is wat alle dossiers zouden moeten kijken als wanneer completed.
Attachments:

Antwoord : Combineer Bladen in Werkboek


Ik heb mijn code van http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/A_2804-Code-to-compile-all-worksheets-from-either-a-all-Excel-workbooks-in-a-folder-or-b-a-specific-Excel-workbook.html gewijzigd

Pls stelt deze code van een afzonderlijk dossier in werking, doorbladert zoals die aan uw gesloten dossier Test_Constraints en looppas wordt gevraagd

Juicht toe

Dave
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
Openbare SubConsolidateSheets ()
    Schemerige Wb1 als Werkboek
    Schemerige Wb2 als Werkboek
    Schemerige ws1 als Aantekenvel
    Schemerige ws2 als Aantekenvel
    Schemerige ws3 als Aantekenvel
    Schemerige rng1 als Waaier
    Schemerige rng2 als Waaier
    Schemerige rng3 als Waaier
    Schemerige rngArea als Waaier
    Schemerige lrowSpace zoals lang
    Schemerige lSht zoals lang
    Schemerige lngCalc zoals lang
    Schemerige lngRow zoals lang
    Schemerige lngCol zoals lang
    Schemerig X ()
    Schemerige bProcessFolder zoals Van Boole
    Schemerige bNewSheet zoals Van Boole

    Schemerige StrPrefix
    Schemerige strFileName als Koord
    Schemerige strFolderName als Koord

    'verschillende verklaring nodig voor het voorwerp van Shell om een standaardfolder te gebruiken
    Schemerige strDefaultFolder als Variant


    bProcessFolder = Application.InputBox („verwerk één enkele (WARE) omslag,“ & (VALSE) vbNewLine & „of enig dossier“, het „Werkingsgebied van de Toepassing: Omslag of enig Dossier“, „Waar“, 4)
    bNewSheet = Application.InputBox („haal alle gegevens aan één enkel (WAAR) blad,“ & vbNewLine & „of een blad van het doeldossier voor elk bron (VALS) blad“, het „Formaat van de Output: Kies blad of blad door blad uit inzameling“, „Waar“, 4)
    Als niet bProcessFolder toen
        Als niet bNewSheet toen
            MsgBox „Er is niet veel punt die tot een nauwkeurige replica van uw brondossier leiden:)“
            Sub van de uitgang
        Eind als
    Eind als

    'plaats standaardfolder indien hier nodig
    strDefaultFolder = „C:\temp“

    'Als de gebruiker alle bladen aan één enkel doelblad toen rij het uit elkaar plaatsen bij elkaar brengt
    'tussen verschillende bladen onderscheid maken kan hier worden geplaatst
    lrowSpace = 0

    Als bProcessFolder toen
        strFolderName = BrowseForFolder (strDefaultFolder)
        'Zoek xls, xlsx, xlsm dossiers
        strFileName = Dir (strFolderName & „\ *.xls*“)
    Anders
        strFileName = Toepassing _
                      .GetOpenFilename („Uitgezocht te verwerken dossier (*.xls), *.xls“)
    Eind als

    Reeks Wb1 = Workbooks.Add (1)
    Reeks ws1 = Wb1.Sheets (1)
    Als niet bNewSheet toen ws1.Range („A1: B1“) = Serie („werkboeknaam“, „aantekenveltelling“)

    'Draai van het screenupdating, gebeurtenissen, alarm en vastgestelde berekening aan handboek
    Met Toepassing
        .DisplayAlerts = Vals
        .EnableEvents = Vals
        .ScreenUpdating = Vals
        lngCalc =. Berekening
        . Berekening = xlCalculationManual
    Eind met

    'plaats weg buiten de lijn
    StrPrefix = strFolderName & IIf (bProcessFolder, „\“, vbNullString)

    Doe terwijl Len (strFileName) > 0
        'Verstrek vooruitgangsstatus aan gebruiker
        Application.StatusBar = Weggegaan („Verwerking“ & strFolderName & „\“ & strFileName, 255)
        'Open elk werkboek in de omslag van belang
        Plaats Wb2 = Workbooks.Open (StrPrefix & strFileName)
        Als niet bNewSheet toen
            'voeg summiere details aan eerste blad toe
            ws1.Cells (Rows.Count, „A“). Eind (xlUp). Compensatie (1, 0) = Wb2.Name
            ws1.Cells (Rows.Count, „A“). Eind (xlUp). Compensatie (0, 1) = Wb2.Sheets.Count
        Eind als
        Voor Elke ws2 in Wb2.Sheets
            Als bNewSheet toen
                'Alle gegevens aan één enkel blad
                'Skip het invoeren de gegevens van het doelblad als het bronblad leeg is
                Reeks rng2 = ws2.Cells.Find („*“, ws2. [xlPrevious a1], xlValues, xlByRows,)

                Als niet rng2 dan niets is
                    Reeks rng1 = ws1.Cells.Find („*“, ws1. [xlPrevious a1], xlValues, xlByRows,)
                    'Vind de eerste lege rij op het doelblad
                    Als niet rng1 dan niets is
                        Plaats rng3 = ws2.Range (ws2.UsedRange.Cells (1), ws2.Cells (rng2.Row, „A“))
                        'Zorg ervoor dat het rijgebied in het doelblad niet zal overschreden worden
                        Als rng3.Rows.Count + rng1.Row < Rows=""> 0 toen ws1.Rows (rng1.Row + 1). Interior.Color = vbGreen
                    Anders
                        'het doelblad is leeg zo exemplaar aan eerste rij
                        ws2.UsedRange.Copy ws1.Cells (1, ws2.UsedRange.Cells (1). Kolom)
                    Beëindig als
                Beëindig als
            Anders
                'nieuw doelblad voor elk bronblad
                ws2.Copy na: =Wb1.Sheets (Wb1.Sheets.Count)
                'Verwijder om het even welke verbindingen in ons doelblad
                Met Wb1.Sheets (Wb1.Sheets.Count). Cellen
                    . Exemplaar
                    .PasteSpecial xlPasteValues
                Eind met
                Op Fout hervat daarna
                Wb1.Sheets (Wb1.Sheets.Count). Naam = ws2.Name
                'bladnaam er bestaat reeds in doelwerkboek
                Als Err.Number <> 0 toen
                    'Voeg een aantal aan de bladnaam tot toe een unieke naam wordt afgeleid
                    
                        lSht = lSht + 1
                        Reeks ws3 = Wb1.Sheets (ws2.Name & „„& lSht)
                    Lijn terwijl niet ws3 niets is
                    lSht = 0
                Eind als
                Op Fout GoTo 0
            Eind als
        Volgende ws2
        'Sluit het geopende werkboek
        Wb2.Close Vals
        'Controle of om a te dwingen uitgang als het verwerking van één enkel dossier van een lus voorzien
        Als bProcessFolder = de Valse dan Uitgang 
        strFileName = Dir
    Lijn

    'Verwijder om het even welke verbindingen als de gebruiker een doelblad heeft gebruikt
    Als bNewSheet toen
        Met ws1.UsedRange
            . Exemplaar
            . Cellen (1) .PasteSpecial xlPasteValues
            . Cellen (1). Activeer
        Eind met
    Anders
        'Formaat het summiere blad als de gebruiker afzonderlijke doelbladen heeft gecre�ërd
        ws1.Activate
        ws1.Range („A1: B1“). Font.Bold = Waar
        ws1.Columns.AutoFit
    Eind als

    Met Toepassing
        .CutCopyMode = Vals
        .DisplayAlerts = Waar
        .EnableEvents = Waar
        .ScreenUpdating = Waar
        . Berekening = lngCalc
        .StatusBar = vbNullString
    Eind met
Sub van het eind


Functie BrowseForFolder (Facultatieve OpenAt als Variant) als Variant
'Van Ken Puls zoals die in zijn vbaexpress.com artikel wordt gebruikt
'http://www.vbaexpress.com/kb/getarticle.php?kb_id=284

    Schemerige ShellApp als Voorwerp
    'Cre�ër een dossierbrowser venster bij de standaardomslag
    Plaats ShellApp = CreateObject („Shell.Application“). _
                   BrowseForFolder (0, „te kiezen gelieve een omslag“, 0, OpenAt)

    'Plaats de omslag aan geselecteerd dat.  (Op fout voor het geval dat geannuleerd)
    Op Fout hervat daarna
    BrowseForFolder = ShellApp.self.Path
    Op Fout GoTo 0

    'Vernietig de Toepassing van Shell
    Plaats ShellApp = niets

    De 'controle voor ongeldig of de niet-ingangen en verzenden naar de Ongeldige fout
    'manager indien gevonden
    De 'geldige selecties kunnen met L beginnen: (waar L een brief) is of
    '\ \ (zoals in \ \ servername \ sharename.  Al anderen zijn ongeldig
    Selecteer Medio Geval (BrowseForFolder, 2, 1)
    Het geval is = „: “
        Indien Weggegaan (BrowseForFolder, 1) = „: “ Toen Ongeldige GoTo
    Het geval is = „\“
        Als Weggegaan niet (BrowseForFolder, 1) = „\“ toen Ongeldige GoTo
    Geval anders
        Ongeldige GoTo
    Uitgezocht eind

    De Functie van de uitgang

Ongeldig:
    'Als men bepaalde dat de selectie ongeldig was, geplaatst aan Vals
    BrowseForFolder = Vals
De Functie van het eind
Andere oplossingen  
 
programming4us programming4us