Questione : I bisogni di codice di VBA hanno convertito MS Excel 2003 - 2007

Ciao gli esperti, libro di esercizi del

The Excel che uso per consolidare i libri di esercizi multipli in uno per la segnalazione ha arrestato il funzionamento perché alcuni dei metodi 2003 di Excel non sono disponibili in MS Excel 2007. Il codice legge attraverso tutto il libro di esercizi in un indice dato e tira i dati dalla cellula specificata. il

I originale ha pensato che il problema fosse dovuto sicurezza a macroistruzione o i percorsi di fiducia ma eliminasse quello provandolo in 2003 - ha funzionato benissimo là. il

Can uno di voi riscrive prego il codice qui sotto per funzionare in MS Excel 2007? L'un metodo che conosco non funziona di sicuro è FIleSearch. il

I ha ricreato le lime di campione per gli scopi di prova: il
File MSEx2007 ha il codice che se quello carica i dati da TestData sommario. il
dei copyFromFiles del

Sub () oscura il wksCopyTo come wkbCopyFrom fioco di Worksheet
come copyToHere fioco di Workbook
come wksCopyTo del
di Range
= ThisWorkbook.Sheets stabiliti (copyToHere stabilito del
del
di 1)
wksCopyTo.Cells.Clear
=
di wksCopyTo.Range (“a1„) n =
di 0
sul
Application.FileSearch.Loo del riassunto di errore/>kIn = ThisWorkbook.Path
Application.FileSearch.FileType = msoFileTypeExcelWorkbooks
Application.FileSearch.SearchSubFolders =
di False
Application.FileSearch.Execute
per i = 1 a Application.FileSearch.FoundFiles.Count
se Application.FileSearch.FoundFiles (i) = wkbCopyFrom stabilito di avanzamento di ThisWorkbook.FullName allora NotMe

= Workbooks.Open (
n di Application.FileSearch.FoundFiles (i)) = n + 1
con wkbCopyFrom.Sheets (“Sheet1")
copyToHere.Offset (0, 1) =. Gamma (“D4„). Progetto Name
copyToHere.Offset (0 di valore “, 2) =. Gamma (“D5„). Stimare “il
di With
di conclusione del
del
di By
“con wkbCopyFrom.Sheets (“Sheet2")
“copyToHere.Offset (0, 6) =. Gamma (“J7„). Stimare del
“di conclusione di With
con il
copyToHere.Offset (0, 30) del
di wkbCopyFrom.Sheets il
(“di Sheet3l„) =. Gamma (“C60„). copyToHere stabilito del
di With
di conclusione del


di valore = copyToHere.Offset (
NotMe del
wkbCopyFrom.Close False
di 1)
:
End Sub


Thank del
del i
del
voi per dare un'occhiata al class= " class= >

MSEx2007-Summary.xls„ del _blank "„ del target= " di http://filedb.experts-exchange.com/incoming/2010/08_w34/338988/MSEx2007-Summary.xls„ del href= rilevato virus " fileSize " > (44 Kb) href= " dei attachmentDetails„ del class= di (tipo di lima particolari) nome di schedario " vuoto " " vuoto " libero„ del class= di >
Worksheet con VBA Code
SummaryTestData.xlsx " fileSize " > (8 Kb) il Javascript„ del href= " " dei attachmentDetails del class= di (tipo di lima particolari) la descrizione " >Worksheet del class= " di
MSEx2007-Summary.xls " fileSize " > (44 Kb) il Javascript„ del href= " " dei attachmentDetails del class= di (tipo di lima particolari) nome di schedario " vuoto " " vuoto " libero„ del class= di >
Worksheet con VBA Code
SummaryTestData.xlsx " fileSize " > (8 Kb) il Javascript„ del href= " " dei attachmentDetails del class= di (tipo di lima particolari) il >Worksheet " di descrizione " del class= di
del >
class= del

Risposta : I bisogni di codice di VBA hanno convertito MS Excel 2003 - 2007

ho spostato il codice verso un modulo, che è il posto più comune per trovarlo.

ed allora aggiunto un codice categoria che mimi più del Application.FileSearch.
è principalmente il lavoro di altri ma lo ho riparato per cercare meglio i subfolders e il impement più funzioni del fileseach originale.

Uploaded il libro di esercizi modificato ma al contrario….

>codice<---------> modificato %ur…. il posto in un modulo e cancella il vecchio da Workbook1

copyFromFiles secondari ()
   wksCopyTo fioco come manuale
   wkbCopyFrom fioco come libro di esercizi
   copyToHere fioco come gamma
   
   Regolare il wksCopyTo = ThisWorkbook.Sheets (1)
   wksCopyTo.Cells.Clear
   
   
   Regolare il copyToHere = wksCopyTo.Range (“a1„)
   n = 0
   
   Sul riassunto di errore dopo
   AppFileSearch fioco come nuovo FileSearch
   
   AppFileSearch.LookIn = ThisWorkbook.path
   AppFileSearch.fileType = “xls?„            “<>    AppFileSearch.fileName = “SummarytestData„„<>    AppFileSearch.SearchSubFolders = allineano
   AppFileSearch.Execute
   
   Per i = 1 a AppFileSearch.Count
       Se AppFileSearch.FoundFiles (i) = ThisWorkbook.FullName allora
           “saltare questo„
           'NotMe di avanzamento
       Altrimenti
            Regolare il wkbCopyFrom = Workbooks.Open (AppFileSearch.FoundFiles (i))
            n = n + 1
            Con wkbCopyFrom.Sheets (“Sheet1„)
                copyToHere.Offset (0, 1) =. Gamma (“A1„) .value
                copyToHere.Offset (0, 2) =. Gamma (“B1„) .value
                copyToHere.Offset (0, 3) =. Gamma (“C1„) .value
                copyToHere.Offset (0, 4) =. Gamma (“A4„) .value
                copyToHere.Offset (0, 5) =. Gamma (“B4„) .value
                copyToHere.Offset (0, 6) =. Gamma (“C4„) .value
             Estremità con
           
            Regolare il copyToHere = copyToHere.Offset (1)
   
           wkbCopyFrom.Close falso
       Concluder se

   Dopo i
     
       
Sommergibile dell'estremità


>%place<---------------------> questo codice in un nuovo ClassModule e lo chiamano 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:
'' da 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


pLookIn fioco come stringa
pSearchSubFolders fiochi come booleani
pFileName fioco come stringa
pFileType fioco come stringa

pFoundFiles pubblici come nuova accumulazione


Class_Initialize secondario riservato ()
    pLookIn = “.„
    pFileType = “*„
    pFileName = “*„
    pSearchSubFolders = falso
    
Sommergibile dell'estremità
Funzione pubblica NewSearch ()
    Class_Initialize
    Regolare i pFoundFiles = nuova accumulazione
    
Concludere la funzione
La proprietà pubblica ottiene il conteggio () come stringa
    Conteggio = pFoundFiles.Count
Proprietà dell'estremità
La proprietà pubblica ottiene FoundFiles (xx) come stringa
    FoundFiles = pFoundFiles (xx)
Proprietà dell'estremità
La proprietà pubblica ottiene LookIn () come stringa
    LookIn = pLookIn
Proprietà dell'estremità
La proprietà pubblica ha lasciato LookIn (valore come stringa)
    pLookIn = valore
Proprietà dell'estremità
La proprietà pubblica ottiene SearchSubFolders () come booleana
    SearchSubFolders = pSearchSubFolders
Proprietà dell'estremità
La proprietà pubblica ha lasciato SearchSubFolders (valore come booleano)
    pSearchSubFolders = valore
Proprietà dell'estremità
La proprietà pubblica ottiene il nome di schedario () come stringa
    nome di schedario = pFileName
Proprietà dell'estremità
La proprietà pubblica ha lasciato il nome di schedario (valore come stringa)
    pFileName = valore
Proprietà dell'estremità
La proprietà pubblica ottiene il fileType () come stringa
    fileType = pFileType
Proprietà dell'estremità
La proprietà pubblica ha lasciato il fileType (valore come stringa)
    pFileType = valore
Proprietà dell'estremità
La funzione pubblica esegue () come lungamente

    Oscurare la i come lungamente
    Oscurare lo sLookIn come stringa
    Oscurare lo sDirName come stringa
    Oscurare lo sCurDir come stringa
    Oscurare lo sFileName come stringa
    'FF fiochi come FilesFound
   
    i = 1
    'Regolar FF = nuovo FileSearchFound
    sLookIn = pLookIn
    RecurseFolder (sLookIn)
    
    
    
    Eseguire = pFoundFiles.Count
Concludere la funzione

Sub RecurseFolder (sFolderStart)
    
    sFileName = Dir (sFolderStart & “\„ & pFileName & “.„ & pFileType, vbNormal)
    Fare fino a Len (sFileName) = 0

        pFoundFiles.Add (sFolderStart & “\„ & sFileName)
        sFileName = Dir
    Ciclo
    Se pSearchSubFolders allora
        sDirName = Dir (sFolderStart & “\„, vbDirectory)
        FoundDirectories fioco come nuova accumulazione, xxDir come variante
        Fare fino a Len (sDirName) = 0
        
            sCurDir = sFolderStart & “\„ & sDirName
            Se GetAttr (sCurDir) = vbDirectory e sDirName <> “.„ E sDirName <> “.„ Allora
                sCurDir di FoundDirectories.Add
            Concluder se
            sDirName = Dir
        Ciclo
        Per ogni xxDir in FoundDirectories
            RecurseFolder (xxDir)
        xxDir seguente
 
    Concluder se


Concludere il sommergibile
Radura pubblica di funzione () come lungamente
    NewSearch
Funzione di conclusione
 
Libro di esercizi a macroistruzione aggiornato
 
Altre soluzioni  
 
programming4us programming4us