Frage : Mähdrescher-Blätter im Arbeitsbuch

Ich hatte ein übertreffenarbeitsbuch, das 6 worksheets

Sheet A
Sheet B
Sheet C
Sheet D
Sheet E
Combined

I Notwendigkeit hat, alle Daten in jedem Blatt A, B, C, D u. E in ein Arbeitsblatt zu kombinieren.  Die Daten, die ich Anfänge auf Reihe 4 kopieren muss; jedoch beendet jedes Arbeitsblatt an einer anderen Reihe (die Wochenzeitung ändern könnte).  Wie ich tue, die erste Reihe vorwählen, die Reihe 4 ist; wie dann haben Kopie unten zur letzten Reihe mit data.

I eine angebracht Akte, damit Sie sehen dass können, die ursprünglichen Blätter und das kombinierte Arbeitsblatt ist, was alle Akten aussehen sollten wenn completed.
Attachments:

Antwort : Mähdrescher-Blätter im Arbeitsbuch


Ich habe meinen Code vom 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 geändert

Pls lassen diesen Code von einer unterschiedlichen Akte laufen, grasen, wie zu Ihrer geschlossenen Test_Constraints Akte verlangt und laufen

Beifall

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:
6:
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:
Allgemeines VorConsolidateSheets ()
    Schwaches Wb1 als Arbeitsbuch
    Schwaches Wb2 als Arbeitsbuch
    Schwaches ws1 als Arbeitsblatt
    Schwaches ws2 als Arbeitsblatt
    Schwaches ws3 als Arbeitsblatt
    Schwaches rng1 als Strecke
    Schwaches rng2 als Strecke
    Schwaches rng3 als Strecke
    Schwaches rngArea als Strecke
    Schwaches lrowSpace als lang
    Schwaches lSht als lang
    Schwaches lngCalc als lang
    Schwaches lngRow als lang
    Schwaches lngCol als lang
    Schwaches X ()
    Schwaches bProcessFolder, wie Boolesch
    Schwaches bNewSheet, wie Boolesch

    Schwaches StrPrefix
    Schwaches strFileName als Schnur
    Schwaches strFolderName als Schnur

    'verschiedene Erklärung musste, damit der Shell-Gegenstand ein Rückstellungsverzeichnis benutzt
    Schwaches strDefaultFolder als Variante


    bProcessFolder = Application.InputBox („ein einzelnes Faltblatt (ZUTREFFEND),“ u. vbNewLine u. „oder die einzelne Akte verarbeiten (FALSCH)“, „Anwendungs-Bereich: Faltblatt oder einzelne Akte“, „richten“, 4) aus
    bNewSheet = Application.InputBox („alle Daten zu einem einzelnen Blatt (ZUTREFFEND),“ u. vbNewLine u. „oder ein Zielaktenblatt extrahieren für jedes Quellblatt (FALSCH)“, „Ausgangs-Format: Einzelnes Blatt oder Blatt durch Blattansammlung“, „richten“, 4) aus
    Wenn nicht bProcessFolder dann
        Wenn nicht bNewSheet dann
            MsgBox „dort ist nicht viel Punkt, der eine genaue Replik Ihrer Quellakte: verursacht)“
            Unterseeboot herausnehmen
        Beenden wenn
    Beenden wenn

    'Rückstellungsverzeichnis hier einstellen, wenn Sie gebraucht werden
    strDefaultFolder = „C:\temp“

    'Wenn der Benutzer alle Blätter zu einem einzelnen Zielblatt dann der Reihenabstand sortiert
    ', zwischen verschiedenen Blättern zu unterscheiden kann hier eingestellt werden
    lrowSpace = 0

    Wenn bProcessFolder dann
        strFolderName = BrowseForFolder (strDefaultFolder)
        'Nach xls, xlsx, xlsm Akten suchen
        strFileName = Dir (strFolderName u. „\ *.xls*")
    Sonst
        strFileName = Anwendung _
                      .GetOpenFilename („auserwählte zu verarbeiten Akte (*.xls), *.xls“)
    Beenden wenn

    Einstellen Wb1 = Workbooks.Add (1)
    Einstellen ws1 = Wb1.Sheets (1)
    Wenn nicht bNewSheet dann ws1.Range („A1: B1“) = Reihe („Arbeitsbuchname“, „Arbeitsblattzählimpuls“)

    'Weg screenupdating, Ereignisse, Alarme und Satzberechnung zum Handbuch drehen
    Mit Anwendung
        .DisplayAlerts = falsch
        .EnableEvents = falsch
        .ScreenUpdating = falsch
        lngCalc =. Berechnung
        . Berechnung = xlCalculationManual
    Ende mit

    'Weg außerhalb der Schleife einstellen
    StrPrefix = strFolderName u. IIf (bProcessFolder, vbNullString „\“,)

    Tun während Len (strFileName) > 0
        'Fortschrittsstatus zum Benutzer zur Verfügung stellen
        Application.StatusBar = verließ („Verarbeitung“ u. strFolderName u. „\“ u. strFileName, 255)
        'Jedes Arbeitsbuch im Faltblatt des Interesses öffnen
        Einstellen Wb2 = Workbooks.Open (StrPrefix u. strFileName)
        Wenn nicht bNewSheet dann
            'zusammenfassende Details erstem Blatt hinzufügen
            ws1.Cells (Rows.Count, „A“). Ende (xlUp). Versatz (1, 0) = Wb2.Name
            ws1.Cells (Rows.Count, „A“). Ende (xlUp). Versatz (0, 1) = Wb2.Sheets.Count
        Beenden wenn
        Für jedes ws2 in Wb2.Sheets
            Wenn bNewSheet dann
                'Alle Daten zu einem einzelnen Blatt
                'Überspringen, Zielblattdaten importierend, wenn das Quellblatt leer ist
                Einstellen rng2 = ws2.Cells.Find („*“, ws2. [a1], xlValues, xlByRows, xlPrevious)

                Wenn nicht rng2 nichts dann ist
                    Einstellen rng1 = ws1.Cells.Find („*“, ws1. [a1], xlValues, xlByRows, xlPrevious)
                    'Die erste Raumreihe auf dem Zielblatt finden
                    Wenn nicht rng1 nichts dann ist
                        Einstellen rng3 = ws2.Range (ws2.UsedRange.Cells (1), ws2.Cells (rng2.Row, „A“))
                        'Garantieren, dass der Reihenbereich im Zielblatt nicht überstiegen wird
                        Wenn rng3.Rows.Count + rng1.Row < Rows=""> 0 dann ws1.Rows (rng1.Row + 1).Interior.Color = vbGreen
                    Sonst
                        'Zielblatt ist leere so Kopie zur ersten Reihe
                        ws2.UsedRange.Copy ws1.Cells (1, ws2.UsedRange.Cells (1).Column)
                    Beenden wenn
                Beenden wenn
            Sonst
                'neues Zielblatt für jedes Quellblatt
                ws2.Copy nachher: =Wb1.Sheets (Wb1.Sheets.Count)
                'Alle mögliche Verbindungen in unserem Zielblatt entfernen
                Mit Wb1.Sheets (Wb1.Sheets.Count). Zellen
                    . Kopie
                    .PasteSpecial xlPasteValues
                Ende mit
                Auf Störungs-Zusammenfassung zunächst
                Wb1.Sheets (Wb1.Sheets.Count). Name = ws2.Name
                'Blattname existiert bereits im Zielarbeitsbuch
                Wenn Err.Number <> 0 dann
                    'Eine Zahl dem Blattnamen hinzufügen, bis ein einzigartiger Name abgeleitet wird
                    Tun
                        lSht = lSht + 1
                        Einstellen ws3 = Wb1.Sheets (ws2.Name u. „„u. lSht)
                    Schlingen, während nicht ws3 nichts ist
                    lSht = 0
                Beenden wenn
                Auf Störung Goto- 0
            Beenden wenn
        Folgendes ws2
        'Nah das geöffnete Arbeitsbuch
        Wb2.Close falsch
        'Überprüfen, ob man a schlingen Ausgang zwingt, wenn Sie eine einzelne Akte verarbeiten
        Wenn bProcessFolder = falsch dann herausnehmen, tun
        strFileName = Dir
    Schleife

    'Alle mögliche Verbindungen entfernen, wenn der Benutzer ein Zielblatt benutzt hat
    Wenn bNewSheet dann
        Mit ws1.UsedRange
            . Kopie
            . Zellen (xlPasteValues 1).PasteSpecial
            . Zellen (1).Activate
        Ende mit
    Sonst
        'Das zusammenfassende Blatt formatieren, wenn der Benutzer unterschiedliche Zielblätter hergestellt hat
        ws1.Activate
        ws1.Range („A1: B1“). Font.Bold = richten aus
        ws1.Columns.AutoFit
    Beenden wenn

    Mit Anwendung
        .CutCopyMode = falsch
        .DisplayAlerts = richten aus
        .EnableEvents = richten aus
        .ScreenUpdating = richten aus
        . Berechnung = lngCalc
        .StatusBar = vbNullString
    Ende mit
Enden-Unterseeboot


Funktion BrowseForFolder (wahlweise freigestelltes OpenAt als Variante) als Variante
'Von den KenPuls, wie in seinem vbaexpress.com-Artikel verwendet
'http://www.vbaexpress.com/kb/getarticle.php?kb_id=284

    Schwaches ShellApp als Gegenstand
    'Eine AktenBrowser Window am Rückstellungsfaltblatt herstellen
    ShellApp = CreateObject („Shell.Application“) einstellen. _
                   BrowseForFolder (0, „wählen bitte ein Faltblatt“, 0, OpenAt)

    'Das Faltblatt auf das einstellen vorgewählt.  (Auf Störung, falls annulliert)
    Auf Störung zunächst wieder aufnehmen
    BrowseForFolder = ShellApp.self.Path
    Auf Störung Goto- 0

    'Die Shell-Anwendung zerstören
    ShellApp einstellen = nichts

    'Auf unzulässigem oder Nichteintragungen überprüfen und zur unzulässigen Störung senden
    'Zufuhr, wenn Sie gefunden werden
    'Gültige Vorwähleren können L anfangen: (wo L ein Buchstabe ist) oder
    '\ \ (wie in \ \ servername \ sharename.  Alle andere sind unzulässig
    Den mittleren vorwählen Fall (BrowseForFolder, 2, 1)
    Fall ist = „: “
        Wenn Sie verlassen werden (BrowseForFolder, 1) = „: “ Dann Goto- unzulässiges
    Fall ist = „\“
        Wenn Sie nicht verlassen werden (BrowseForFolder, 1) = „\“ dann Goto- unzulässiges
    Fall sonst
        Goto- unzulässiges
    Ende auserwählt

    Funktion herausnehmen

Unzulässig:
    'Wenn es festgestellt wurde, dass die Vorwähler unzulässig war, stellten auf falsches ein
    BrowseForFolder = falsch
Enden-Funktion
Weitere Lösungen  
 
programming4us programming4us