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
|