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
|