Question : Feuilles de cartel en cahier de travail

J'ai eu un cahier de travail d'exceler qui a 6 le besoin du worksheets

Sheet A
Sheet B
Sheet C
Sheet D
Sheet E
Combined

I de combiner toutes les données en chaque feuille A, B, C, D, et E dans une feuille de travail.  Les données que je dois copier des débuts sur la rangée 4 ; cependant, chaque feuille de travail finit à une rangée différente (qui pourrait changer l'hebdomadaire).  Comment fais je choisir la première rangée, qui est la rangée 4 ; alors la copie vers le bas à la dernière rangée avec data.

I ont attaché un dossier de sorte que vous puissiez voir qu'est les feuilles originales et la feuille de travail combinée à ce que tous les dossiers devraient ressembler quand completed.
class= " lastRow de
>Attachments de " nom " de class= de
class= " valeur " de
>

class= " fileInfo " de
le title= " de " nom de fichier de class= " de Test-Constraints.xlsx le class= (44 KBS)  Javascript de href= " de " attachmentDetails de class= " de (type de dossier détails)  
class= " description " de
Échantillon File
le class= de
de >
class= de

Réponse : Feuilles de cartel en cahier de travail


J'ai modifié mon code de 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 courent ce code à partir d'un dossier séparé, passent en revue comme en a été faite la demande à votre dossier fermé de Test_Constraints et fonctionnent

À la votre

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 secondaire public ()
    Faible Wb1 comme cahier de travail
    Faible Wb2 comme cahier de travail
    Faible ws1 comme feuille de travail
    Faible ws2 comme feuille de travail
    Faible ws3 comme feuille de travail
    Faible rng1 comme gamme
    Faible rng2 comme gamme
    Faible rng3 comme gamme
    Faible rngArea comme gamme
    Faible lrowSpace en tant que longtemps
    Faible lSht en tant que longtemps
    Faible lngCalc en tant que longtemps
    Faible lngRow en tant que longtemps
    Faible lngCol en tant que longtemps
    Faible X ()
    Faible bProcessFolder comme booléen
    Faible bNewSheet comme booléen

    Faible StrPrefix
    Faible strFileName comme corde
    Faible strFolderName comme corde

    'la déclaration variable a dû pour que l'objet de Shell emploie un annuaire de défaut
    Faible strDefaultFolder comme variante


    bProcessFolder = Application.InputBox (« traiter une chemise simple (VRAIE), » et vbNewLine et « ou dossier simple (FAUX) », « champ d'application : La chemise ou le dossier simple », « rectifient », 4)
    bNewSheet = Application.InputBox (« extraire toutes les données à une feuille simple (VRAIE), » et vbNewLine et « ou une feuille de dossier de cible pour chaque feuille de source (FAUSSE) », « format de rendement : La feuille simple ou la feuille par la collection de feuille », « rectifient », 4)
    Sinon bProcessFolder alors
        Sinon bNewSheet alors
            MsgBox « là n'est pas beaucoup de point créant une reproduction exacte de votre fichier source :) »
            Sortir le sous-marin
        Finir si
    Finir si

    'placer l'annuaire de défaut ici si nécessaire
    strDefaultFolder = « C:\temp »

    'Si l'utilisateur assemble toutes les feuilles à une feuille monocible puis l'espacement de rangée
    'distinguer différentes feuilles peut être placé ici
    lrowSpace = 0

    Si bProcessFolder alors
        strFolderName = BrowseForFolder (strDefaultFolder)
        'Rechercher les xls, xlsx, dossiers de xlsm
        strFileName = Dir (strFolderName et « \ *.xls*")
    Autrement
        strFileName = _ d'application
                      .GetOpenFilename (« dossier choisi à traiter (*.xls), *.xls »)
    Finissent si

    Placer Wb1 = Workbooks.Add (1)
    Placer ws1 = Wb1.Sheets (1)
    Sinon bNewSheet puis ws1.Range (« A1 : B1 ») = rangée (« nom de cahier de travail », « compte de feuille de travail »)

    'Tourner au loin screenupdating, événements, alertes et calcul d'ensemble au manuel
    Avec l'application
        .DisplayAlerts = faux
        .EnableEvents = faux
        .ScreenUpdating = faux
        lngCalc =. Calcul
        . Calcul = xlCalculationManual
    Extrémité avec

    'placer le chemin en dehors de la boucle
    StrPrefix = strFolderName et IIf (bProcessFolder, « \ », vbNullString)

    Faire tandis que Len (strFileName) > 0
        'Fournir l'état d'avancement à l'utilisateur
        Application.StatusBar = est parti (« traitement » et strFolderName et « \ » et strFileName, 255)
        'Ouvrir chaque cahier de travail dans la chemise d'intérêt
        Placer Wb2 = Workbooks.Open (StrPrefix et strFileName)
        Sinon bNewSheet alors
            'ajouter les détails récapitulatifs à la première feuille
            ws1.Cells (Rows.Count, « A »). Extrémité (xlUp). Excentrage (1, 0) = Wb2.Name
            ws1.Cells (Rows.Count, « A »). Extrémité (xlUp). Excentrage (0, 1) = Wb2.Sheets.Count
        Finir si
        Pour chaque ws2 dans Wb2.Sheets
            Si bNewSheet alors
                'Toutes les données à une feuille simple
                'Sauter en important des données de feuille de cible si la feuille de source est blanche
                Placer rng2 = ws2.Cells.Find (« * », ws2. [a1], xlValues, xlByRows, xlPrevious)

                Sinon rng2 n'est rien alors
                    Placer rng1 = ws1.Cells.Find (« * », ws1. [a1], xlValues, xlByRows, xlPrevious)
                    'Trouver la première rangée de blanc sur la feuille de cible
                    Sinon rng1 n'est rien alors
                        Placer rng3 = ws2.Range (ws2.UsedRange.Cells (1), ws2.Cells (rng2.Row, « A »))
                        'S'assurer que le secteur de rangée dans la feuille de cible ne sera pas dépassé
                        Si rng3.Rows.Count + rng1.Row < Rows=""> 0 puis ws1.Rows (rng1.Row + 1).Interior.Color = vbGreen
                    Autrement
                        la 'feuille de cible est ainsi copie vide à la première rangée
                        ws2.UsedRange.Copy ws1.Cells (1, ws2.UsedRange.Cells (1).Column)
                    Finir si
                Finir si
            Autrement
                'nouvelle feuille de cible pour chaque feuille de source
                ws2.Copy ensuite : =Wb1.Sheets (Wb1.Sheets.Count)
                'Enlever tous les liens en notre feuille de cible
                Avec Wb1.Sheets (Wb1.Sheets.Count). Cellules
                    . Copie
                    xlPasteValues de .PasteSpecial
                Extrémité avec
                Sur le résumé d'erreur après
                Wb1.Sheets (Wb1.Sheets.Count). Nom = ws2.Name
                le 'nom de feuille existe déjà en cahier de travail de cible
                Si Err.Number <> 0 puis
                    'Ajouter un nombre au nom de feuille jusqu'à ce qu'un nom unique soit dérivé
                    Faire
                        lSht = lSht + 1
                        Placer ws3 = Wb1.Sheets (ws2.Name et « « et lSht)
                    Faire une boucle tandis que pas ws3 n'est rien
                    lSht = 0
                Finir si
                Sur l'erreur 0 GoTo
            Finir si
        Prochain ws2
        'Étroit le cahier de travail ouvert
        Wb2.Close faux
        'Vérifier si forcer a font une boucle la sortie si traitant un dossier simple
        Si le bProcessFolder = faux sortent alors faire
        strFileName = Dir
    Boucle

    'Enlever tous les liens si l'utilisateur a employé une feuille de cible
    Si bNewSheet alors
        Avec ws1.UsedRange
            . Copie
            . Cellules (xlPasteValues 1).PasteSpecial
            . Cellules (1).Activate
        Extrémité avec
    Autrement
        'Composer la feuille récapitulative si l'utilisateur a créé les feuilles séparées de cible
        ws1.Activate
        ws1.Range (« A1 : B1 »). Font.Bold = rectifient
        ws1.Columns.AutoFit
    Finir si

    Avec l'application
        .CutCopyMode = faux
        .DisplayAlerts = rectifient
        .EnableEvents = rectifient
        .ScreenUpdating = rectifient
        . Calcul = lngCalc
        .StatusBar = vbNullString
    Extrémité avec
Sous-marin d'extrémité


Fonction BrowseForFolder (OpenAt facultatif comme variante) comme variante
'Des Puls de Ken comme utilisés en son article de vbaexpress.com
'http://www.vbaexpress.com/kb/getarticle.php?kb_id=284

    Faible ShellApp comme objet
    'Créer une fenêtre de navigateur de dossier à la chemise de défaut
    Placer ShellApp = CreateObject (« Shell.Application »). _
                   BrowseForFolder (0, « choisissent svp une chemise », 0, OpenAt)

    'Placer la chemise à celle choisie.  (Sur l'erreur au cas où décommandé)
    Sur l'erreur reprendre après
    BrowseForFolder = ShellApp.self.Path
    Sur l'erreur 0 GoTo

    'Détruire l'application de Shell
    Placer ShellApp = rien

    'Vérifier inadmissible ou les non-entrées et envoyer à l'erreur inadmissible
    'traiteur si trouvé
    'Les choix valides peuvent commencer L : (où L est une lettre) ou
    '\ \ (comme dans \ \ servername \ sharename.  Tous les autres sont inadmissibles
    Choisir le cas mi (BrowseForFolder, 2, 1)
    Le cas est = « :  »
        Si parti (BrowseForFolder, 1) = « :  » Inadmissible puis GoTo
    Le cas est = « \ »
        Sinon parti (BrowseForFolder, 1) = « \ » inadmissible puis GoTo
    Cas autrement
        Inadmissible GoTo
    Extrémité choisie

    Sortir la fonction

Inadmissible :
    'Si on le déterminait que le choix était inadmissible, a placé à faux
    BrowseForFolder = faux
Fonction de fin
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us