Question : Combiner les feuilles de travail de différents cahiers de travail dans un cahier de travail using VB.Net

Salut experts.  Im luttant avec un certain nombre de problèmes avec Excel 2007 et VB2008/3.5.  Le principal est que je dois obtenir des feuilles de trois cahiers de travail différents, retitrées et alors combinées dans un cahier de travail séparé.  C'est la feuille entière, pas s'étend d'une feuille.  Est-ce que n'importe qui a une idée pour ceci ?  Beaucoup de mercis à l'avance class= de

Réponse : Combiner les feuilles de travail de différents cahiers de travail dans un cahier de travail using VB.Net

J'ai attaché un certain code qui accomplira la tâche.  Me faire savoir ceci fonctionne.  Le code fonctionne en passant par une liste de chemins de dossier que vous fournissez dans une gamme des cellules.  Ce chemin doit démarrer par l'endroit d'entraînement et descendre toute la manière au nom de fichier avec son extention.

Exemple :

C:\Users\Matthew Sheskey \ ordinateur de bureau \ ExcelImport.xlsx

Vous pouvez fournir l'autant de comme vous voudrez.  La seule restriction ici est Excel peut seulement manipuler les feuilles 250ish.

Vous avez mentionné les feuilles que vous avez seulement pour avoir une feuille de travail.  J'ai structuré le code pour prendre toutes les feuilles de travail dans le cahier de travail juste dans le cas que vous voulez ajouter plus/prenez plus de feuilles plus tard.  Ceci est facilement changé pour prendre seulement 1 feuille si c'est la fonctionnalité désirée.

Le code colle des valeurs maintenant.  Me faire savoir si vous voulez que je change le code pour coller tout comprenant le formatage.

Les cahiers de travail doivent être fermés quand vous courez ce macro.  Je travaille à quelques changements en ce moment pour vérifier s'ils sont déjà ouverts et de là clôturent seulement ceux qui n'étaient pas déjà ouverts.  Je travaille également sur un certain code pour prendre les noms de fichier et les noms de feuille et pour les combiner dans appeler la feuille de travail dans le nouveau cahier de travail.  Ceci peut ne pas fonctionner parce que des noms de feuille sont couverts à 32 caractères.  J'ai pensé que cette fonctionnalité était nécessaire après essai.  J'ai trouvé que le cahier de travail consolidé a eu environ les feuilles une douzaine et était dur pour les maintenir.  Me faire savoir si vous ne voulez pas ceci.

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 :
Substrater les getSheetsFromBooks ()

Obscurcir le dossier, noms de fichier chaîne comme gamme 'des noms de dossier
Obscurcir le WS, le newWS, currentWorksheet comme feuille de travail
Obscurcir l'assemblyWorkbook, dataWorkbook comme cahier de travail
Le faible dataWorkbookName comme corde 'emploiera ceci pour appeler les feuilles dans le nouveau WB
Faible screenUpdate, displayAlerts comme booléens

Placer les noms de fichier = l'Application.Selection
Placer l'assemblyWorkbook = l'Application.ActiveWorkbook
Placer le currentWorksheet = l'Application.ActiveSheet

screenUpdate = Application.ScreenUpdating
Application.ScreenUpdating = faux

displayAlerts = Application.displayAlerts
Application.displayAlerts = faux

'faire une boucle pour réitérer au-dessus des noms de dossier
Pour chaque dossier dans les noms de fichier
    
    Placer le dataWorkbook = le Workbooks.Open (dossier. Valeur)
    dataWorkbook.Activate
    
    'boucle pour copier des feuilles de travail
    Pour le chaque WS dans ActiveWorkbook.Worksheets
        
        le WS. Activer
        Cells.Copy
        assemblyWorkbook.Activate
        Placer le newWS = le Worksheets.Add (ensuite : =Sheets (Sheets.Count))
        Gamme (« A1 »). Activer
        Pâte d'ActiveCell.PasteSpecial : =xlPasteValues
        
        'appelant les feuilles de travail
        'Avec le newWS
        '    . Nom = dataWorkbookName
        'Extrémité avec
        
        Gamme (« A1 »). Choisi
        dataWorkbook.Activate

    Après
    'cahier de travail étroit
    dataWorkbook.Close
Après

'retourner à la feuille de travail que vous avez commencé le programme dessus
currentWorksheet.Activate

Application.CutCopyMode = faux
Application.ScreenUpdating = screenUpdate
Application.ScreenUpdating = displayAlerts

Placer le dossier = rien
Placer les noms de fichier = rien
Placer le WS = rien
Placer le newWS = rien
Placer l'assemblyWorkbook = rien
Placer le dataWorkbook = rien

Finir le sous-marin
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