Cuestión : Hojas de la cosechadora en libro de trabajo

Tenía un libro de trabajo del sobresalir que tiene 6 necesidad del worksheets

Sheet A
Sheet B
Sheet C
Sheet D
Sheet E
Combined

I de combinar todos los datos en cada hoja A, B, C, D, y E en una hoja de trabajo.  Los datos que necesito copiar comienzo en la fila 4; sin embargo, cada hoja de trabajo termina en una diversa fila (que podría cambiar el semanario).  Cómo lo hago seleccionar la primera fila, que es la fila 4; entonces la copia abajo a la fila pasada con data.

I ha atado un archivo de modo que usted pueda ver que las hojas originales y la hoja de trabajo combinada es lo que deben parecer todos los archivos cuando completed.
class= " lastRow del
>Attachments del " nombre " del class= del class= " valor " del
del >

class= " fileInfo " del
el title= " del " nombre de fichero del class= " del Test-Constraints.xlsx el class= (44 KB)  Javascript del href= " de los " attachmentDetails del class= " del (tipo de archivo detalles)  
class= " descripción " del
Muestra File
el class= de
del >
class= del

Respuesta : Hojas de la cosechadora en libro de trabajo


He modificado mi código del 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

Pls funciona con este código de un archivo separado, hojea por requerimiento a su archivo cerrado de Test_Constraints y funciona

Aclamaciones

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:
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
Otras soluciones  
 
programming4us programming4us