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:
|
ConsolidateSheets secundario público ()
Wb1 dévil como libro de trabajo
Wb2 dévil como libro de trabajo
Ws1 dévil como hoja de trabajo
Ws2 dévil como hoja de trabajo
Ws3 dévil como hoja de trabajo
Rng1 dévil como gama
Rng2 dévil como gama
Rng3 dévil como gama
rngArea dévil como gama
lrowSpace dévil como de largo
lSht dévil como de largo
lngCalc dévil como de largo
lngRow dévil como de largo
lngCol dévil como de largo
X dévil ()
bProcessFolder dévil como boleano
bNewSheet dévil como boleano
StrPrefix dévil
strFileName dévil como secuencia
strFolderName dévil como secuencia
la 'declaración variable necesitó para que el objeto de Shell utilice un directorio de defecto
strDefaultFolder dévil como variante
bProcessFolder = Application.InputBox (“procesar una sola carpeta (VERDAD),” y vbNewLine y “o solo archivo (FALSO)”, “alcance de uso: La carpeta o el solo archivo”, “verdad”, 4)
bNewSheet = Application.InputBox (“extraer todos los datos a una sola hoja (VERDAD),” y vbNewLine y “o una hoja del archivo de blanco para cada hoja de la fuente (FALSA)”, “formato de la salida: La sola hoja o la hoja por la colección de la hoja”, “verdad”, 4)
Si no bProcessFolder entonces
Si no bNewSheet entonces
MsgBox “allí no es mucho punto que crea una reproducción exacta de su archivo de fuente:)”
Salir el submarino
Terminar si
Terminar si
'fijar el directorio de defecto aquí si está necesitado
strDefaultFolder = “C:\temp”
'Si el usuario está compaginando todas las hojas a una sola hoja de la blanco entonces el espaciamiento de la fila
'distinguir entre diversas hojas se puede fijar aquí
lrowSpace = 0
Si bProcessFolder entonces
strFolderName = BrowseForFolder (strDefaultFolder)
'Buscar los xls, xlsx, archivos del xlsm
strFileName = Dir (strFolderName y “\ *.xls*")
strFileName = _ del uso
.GetOpenFilename (“archivo selecto a procesar (*.xls), *.xls”)
Terminan si
Fijar Wb1 = Workbooks.Add (1)
Fijar ws1 = Wb1.Sheets (1)
Si no bNewSheet entonces ws1.Range (“A1: B1”) = arsenal (“nombre del libro de trabajo”, “cuenta de la hoja de trabajo”)
'Dar vuelta apagado a screenupdating, a los acontecimientos, a las alarmas y al cálculo del sistema al manual
Con el uso
.DisplayAlerts = falso
.EnableEvents = falso
.ScreenUpdating = falso
lngCalc =. Cálculo
. Cálculo = xlCalculationManual
Extremo con
'fijar la trayectoria fuera del lazo
StrPrefix = strFolderName y IIf (bProcessFolder, “\”, vbNullString)
Hacer mientras que Len (strFileName) > 0
'Proporcionar el estado de progreso al usuario
Application.StatusBar = se fue (“proceso” y strFolderName y “\” y el strFileName, 255)
'Abrir cada libro de trabajo en la carpeta del interés
Fijar Wb2 = Workbooks.Open (StrPrefix y el strFileName)
Si no bNewSheet entonces
'agregar los detalles sumarios a la primera hoja
ws1.Cells (Rows.Count, “A”). Extremo (xlUp). Compensación (1, 0) = Wb2.Name
ws1.Cells (Rows.Count, “A”). Extremo (xlUp). Compensación (0, 1) = Wb2.Sheets.Count
Terminar si
Para cada ws2 en Wb2.Sheets
Si bNewSheet entonces
'Todos los datos a una sola hoja
'Saltar importando datos de la hoja de la blanco si la hoja de la fuente es en blanco
Fijar rng2 = ws2.Cells.Find (“*”, ws2. [a1], xlValues, xlByRows, xlPrevious)
Si no rng2 entonces no es nada
Fijar rng1 = ws1.Cells.Find (“*”, ws1. [a1], xlValues, xlByRows, xlPrevious)
'Encontrar la primera fila del espacio en blanco en la hoja de la blanco
Si no rng1 entonces no es nada
Fijar rng3 = ws2.Range (ws2.UsedRange.Cells (1), ws2.Cells (rng2.Row, “A”))
'Asegurarse de que el área de la fila en la hoja de la blanco no sea excedida
Si rng3.Rows.Count + rng1.Row < Rows=""> 0 entonces ws1.Rows (rng1.Row + 1).Interior.Color = vbGreen
la 'hoja de la blanco es tan copia vacía a la primera fila
ws2.UsedRange.Copy ws1.Cells (1, ws2.UsedRange.Cells (1).Column)
Terminar si
Terminar si
'nueva hoja de la blanco para cada hoja de la fuente
ws2.Copy después: =Wb1.Sheets (Wb1.Sheets.Count)
'Quitar cualquier acoplamiento en nuestra hoja de la blanco
Con Wb1.Sheets (Wb1.Sheets.Count). Células
. Copia
xlPasteValues de .PasteSpecial
Extremo con
En curriculum vitae del error después
Wb1.Sheets (Wb1.Sheets.Count). Nombre = ws2.Name
el 'nombre de la hoja existe ya en libro de trabajo de la blanco
Si Err.Number <> 0 entonces
'Agregar un número al nombre de la hoja hasta que se deriva un nombre único
Hacer
lSht = lSht + 1
Fijar ws3 = Wb1.Sheets (ws2.Name y ““y el lSht)
Colocar mientras que no ws3 no es nada
lSht = 0
Terminar si
En el error 0 indicado
Terminar si
Ws2 siguiente
'Cercano el libro de trabajo abierto
Wb2.Close falso
'Comprobar si forzar a colocan la salida si procesa un solo archivo
Si el bProcessFolder = falso entonces sale hacer
strFileName = Dir
Lazo
'Quitar cualquier acoplamiento si el usuario ha utilizado una hoja de la blanco
Si bNewSheet entonces
Con ws1.UsedRange
. Copia
. Células (xlPasteValues 1).PasteSpecial
. Células (1).Activate
Extremo con
'Dar formato a la hoja sumaria si el usuario ha creado las hojas separadas de la blanco
ws1.Activate
ws1.Range (“A1: B1”). Font.Bold = verdad
ws1.Columns.AutoFit
Terminar si
Con el uso
.CutCopyMode = falso
.DisplayAlerts = verdad
.EnableEvents = verdad
.ScreenUpdating = verdad
. Cálculo = lngCalc
.StatusBar = vbNullString
Extremo con
Submarino del extremo
Función BrowseForFolder (OpenAt opcional como variante) como variante
'De los Puls de Ken según lo utilizado en su artículo de vbaexpress.com
'http://www.vbaexpress.com/kb/getarticle.php?kb_id=284
ShellApp dévil como objeto
'Crear una ventana de hojeador del archivo en la carpeta del defecto
Fijar ShellApp = CreateObject (“Shell.Application”). _
BrowseForFolder (0, “elige por favor una carpeta”, 0, OpenAt)
'Fijar la carpeta a ésa seleccionada. (En error en caso de que esté cancelado)
En error reasumir después
BrowseForFolder = ShellApp.self.Path
En el error 0 indicado
'Destruir el uso de Shell
Fijar ShellApp = nada
'Comprobar para saber si hay inválido o no-entradas y enviar al error inválido
'tratante si está encontrado
Las 'selecciones válidas pueden comenzar L: (donde está una letra L) o
'\ \ (como en \ \ servername \ sharename. Todos los otros son inválidos
Seleccionar el caso mediados de (BrowseForFolder, 2, 1)
El caso es = “: ”
Si está ido (BrowseForFolder, 1) = “: ” Inválido entonces indicado
El caso es = “\”
Si no ido (BrowseForFolder, 1) = “\” inválido entonces indicado
Caso
Inválido indicado
Extremo selecto
Salir la función
Inválido:
'Si fue determinado que la selección era inválida, fijó a falso
BrowseForFolder = falso
Función del final
|