Question : Les besoins de code de VBA ont converti MS Excel 2003 2007

Bonjour les experts, le cahier de travail du

The Excel que j'emploie pour consolider les cahiers de travail multiples dans un pour le reportage a arrêté le travail parce que certaines des 2003 méthodes d'Excel ne sont pas disponibles dans MS Excel 2007. Le code lit par n'importe quel cahier de travail dans un annuaire donné et tire les données hors de la cellule spécifique. le

I a à l'origine pensé que le problème était dû à la macro sécurité ou aux chemins de confiance mais élimine cela en l'examinant en 2003 - cela a fonctionné très bien là. le

Can un de vous récrivent svp le code ci-dessous pour fonctionner dans MS Excel 2007 ? L'une méthode que je sais ne fonctionne pas à coup sûr est FIleSearch. le

I ont recréé des dossiers témoin pour l'essai : le
File MSEx2007 a le code qui si cela charge les données de TestData récapitulatif. le
de copyFromFiles du

Sub () obscurcissent le wksCopyTo comme faible wkbCopyFrom de Worksheet
comme faible copyToHere de Workbook
comme wksCopyTo du
de Range
= ThisWorkbook.Sheets réglés (copyToHere réglé de
de
de 1)
wksCopyTo.Cells.Clear
=
de wksCopyTo.Range (« a1 ») n =
de 0
sur
Application.FileSearch.Loo de résumé d'erreur/>kIn = ThisWorkbook.Path
Application.FileSearch.FileType = msoFileTypeExcelWorkbooks
Application.FileSearch.SearchSubFolders =
de False
Application.FileSearch.Execute
pour I = 1 à Application.FileSearch.FoundFiles.Count
si Application.FileSearch.FoundFiles (i) = wkbCopyFrom réglé GoTo de ThisWorkbook.FullName puis NotMe

= Workbooks.Open
n (d'Application.FileSearch.FoundFiles (i)) = n + 1
avec wkbCopyFrom.Sheets (« Sheet1")
copyToHere.Offset (0, 1) =. Gamme (« D4 »). Projet Name
copyToHere.Offset (0 de valeur « , 2) =. Gamme (« D5 »). Évaluer « le
de With
de fin du
du
de By
« avec wkbCopyFrom.Sheets (« Sheet2")
« copyToHere.Offset (0, 6) =. Gamme (« J7 »). Évaluer du
« de fin de With
avec le
copyToHere.Offset (0, 30) du
de wkbCopyFrom.Sheets le
(« de Sheet3l ») =. Gamme (« C60 »). copyToHere réglé du
de With
de fin du


de valeur = copyToHere.Offset (
NotMe de
wkbCopyFrom.Close False
de 1)
: Prochain
End Sub


Thank du
de l'i
du
vous pour prendre un regard au class= class= >

MSEx2007-Summary.xls de » _blank " de target= de " http://filedb.experts-exchange.com/incoming/2010/08_w34/338988/MSEx2007-Summary.xls » de href= détecté par virus " pas fileSize " > (44 KBs) href= de " attachmentDetails » de class= de (type de dossier détails) nom de fichier vide vide clair » de " class= de >
Worksheet de " >
SummaryTestData.xlsx " fileSize " > (8 KBs) le Javascript de » href= " d'attachmentDetails de class= " de (type de dossier détails) la description " >Worksheet de class= " de
MSEx2007-Summary.xls " fileSize " > (44 KBs) Javascript de href= le " de " attachmentDetails de class= » de (type de dossier détails) nom de fichier vide vide clair » de " class= de >
Worksheet de " >
SummaryTestData.xlsx " fileSize " > (8 KBs) le Javascript de » href= " d'attachmentDetails de class= " de (type de dossier détails) >Worksheet de description le " de class= de
le " le " de >
class= de

Réponse : Les besoins de code de VBA ont converti MS Excel 2003 2007

j'ai déplacé le code à un module, qui est l'endroit plus commun pour le trouver.

et alors supplémentaire une classe qui imitateurs la plupart de l'Application.FileSearch.
c'est la plupart du temps le travail de d'autres mais je l'ai fixé pour rechercher des subfolders mieux et l'impement plus de fonctions du fileseach original.

J'ai téléchargé le cahier de travail révisé mais autrement….

>code<---------> révisé par %ur…. l'endroit dans un module et suppriment le vieux de Workbook1

copyFromFiles secondaires ()
   Faible wksCopyTo comme feuille de travail
   Faible wkbCopyFrom comme cahier de travail
   Faible copyToHere comme gamme
   
   Placer le wksCopyTo = le ThisWorkbook.Sheets (1)
   wksCopyTo.Cells.Clear
   
   
   Placer le copyToHere = le wksCopyTo.Range (« a1 »)
   n = 0
   
   Sur le résumé d'erreur après
   Faible AppFileSearch en tant que nouveau FileSearch
   
   AppFileSearch.LookIn = ThisWorkbook.path
   AppFileSearch.fileType = « xls ? »            « <>    AppFileSearch.fileName = « SummarytestData » »<>    AppFileSearch.SearchSubFolders = rectifient
   AppFileSearch.Execute
   
   Pour I = 1 à AppFileSearch.Count
       Si AppFileSearch.FoundFiles (i) = puis ThisWorkbook.FullName
           « sauter celui-ci »
           'NotMe GoTo
       Autrement
            Placer le wkbCopyFrom = le Workbooks.Open (AppFileSearch.FoundFiles (i))
            n = n + 1
            Avec wkbCopyFrom.Sheets (« Sheet1 »)
                copyToHere.Offset (0, 1) =. Gamme (« A1 ») .value
                copyToHere.Offset (0, 2) =. Gamme (« B1 ») .value
                copyToHere.Offset (0, 3) =. Gamme (« C1 ») .value
                copyToHere.Offset (0, 4) =. Gamme (« A4 ») .value
                copyToHere.Offset (0, 5) =. Gamme (« B4 ») .value
                copyToHere.Offset (0, 6) =. Gamme (« C4 ») .value
             Extrémité avec
           
            Placer le copyToHere = le copyToHere.Offset (1)
   
           wkbCopyFrom.Close faux
       Finir si

   Après i
     
       
Sous-marin d'extrémité


>%place<---------------------> ce code dans un nouveau ClassModule et l'appellent FileSearch


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 :
'' par PrismP @ http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/a450830d-4fc3-4f4e-aee2-03f7994369d6
'http://social.msdn.microsoft.com/profile/prizmp/?type=forum&referrer=http://social.msdn.microsoft.com/Forums/en-US/isvvba/thread/a450830d-4fc3-4f4e-aee2-03f7994369d6


Faible pLookIn comme corde
Faibles pSearchSubFolders comme booléens
Faible pFileName comme corde
Faible pFileType comme corde

pFoundFiles publics en tant que nouvelle collection


Class_Initialize secondaire privé ()
    pLookIn = « . »
    pFileType = « * »
    pFileName = « * »
    pSearchSubFolders = faux
    
Sous-marin d'extrémité
Fonction publique NewSearch ()
    Class_Initialize
    Placer les pFoundFiles = nouvelle collection
    
Finir la fonction
La propriété publique obtiennent le compte () comme corde
    Compte = pFoundFiles.Count
Propriété d'extrémité
La propriété publique obtiennent FoundFiles (xx) comme corde
    FoundFiles = pFoundFiles (xx)
Propriété d'extrémité
La propriété publique obtiennent LookIn () comme corde
    LookIn = pLookIn
Propriété d'extrémité
La propriété publique a laissé LookIn (la valeur comme corde)
    pLookIn = valeur
Propriété d'extrémité
La propriété publique obtiennent SearchSubFolders () comme booléenne
    SearchSubFolders = pSearchSubFolders
Propriété d'extrémité
La propriété publique a laissé SearchSubFolders (la valeur comme booléenne)
    pSearchSubFolders = valeur
Propriété d'extrémité
La propriété publique obtiennent le nom de fichier () comme corde
    nom de fichier = pFileName
Propriété d'extrémité
La propriété publique a laissé le nom de fichier (la valeur comme corde)
    pFileName = valeur
Propriété d'extrémité
La propriété publique obtiennent le fileType () comme corde
    fileType = pFileType
Propriété d'extrémité
La propriété publique a laissé le fileType (la valeur comme corde)
    pFileType = valeur
Propriété d'extrémité
La fonction publique s'exécutent () en tant que longtemps

    Obscurcir I en tant que longtemps
    Obscurcir le sLookIn comme corde
    Obscurcir le sDirName comme corde
    Obscurcir le sCurDir comme corde
    Obscurcir le sFileName comme corde
    'Faible FF comme FilesFound
   
    i = 1
    'Placer FF = nouveau FileSearchFound
    sLookIn = pLookIn
    RecurseFolder (sLookIn)
    
    
    
    Exécuter = pFoundFiles.Count
Finir la fonction

Substrater RecurseFolder (le sFolderStart)
    
    sFileName = Dir (sFolderStart et « \ » et pFileName et « . » et pFileType, vbNormal)
    Faire jusqu'à Len (sFileName) = 0

        pFoundFiles.Add (sFolderStart et « \ » et sFileName)
        sFileName = Dir
    Boucle
    Si pSearchSubFolders alors
        sDirName = Dir (sFolderStart et « \ », vbDirectory)
        Faible FoundDirectories en tant que nouvelle collection, xxDir comme variante
        Faire jusqu'à Len (sDirName) = 0
        
            sCurDir = sFolderStart et « \ » et sDirName
            Si GetAttr (sCurDir) = vbDirectory et sDirName <> « . » Et sDirName <> « . » Puis
                sCurDir de FoundDirectories.Add
            Finir si
            sDirName = Dir
        Boucle
        Pour chaque xxDir dans FoundDirectories
            RecurseFolder (xxDir)
        Prochain xxDir
 
    Finir si


Finir le sous-marin
Espace libre public de fonction () en tant que longtemps
    NewSearch
Fonction de fin
 
Macro cahier de travail mis à jour
 
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