Cuestión : Las necesidades del código de VBA convirtieron MS Excel 2003 a 2007

Hola los expertos, el libro de trabajo del

The Excel que utilizo para consolidar los libros de trabajo múltiples en uno para la información han parado el trabajo porque algunos de los métodos 2003 de Excel no están disponibles en MS Excel 2007. El código lee a través de cualquier libro de trabajo en un directorio dado y saca de los datos la célula especificada. el

I pensó original que el problema era debido a la seguridad macra o a las trayectorias confiadas en pero que elimina eso probándolo en 2003 - trabajó muy bien allí. ¿el

Can uno de usted reescribe por favor el código abajo para trabajar en MS Excel 2007? El un método que sé no trabaja para sure es FIleSearch. el

I ha reconstruido los archivos de muestra para los propósitos de prueba: el
File MSEx2007 tiene el código que si ése carga los datos de TestData sumario. el
de los copyFromFiles del

Sub () amortigua wksCopyTo como wkbCopyFrom dévil de Worksheet
como copyToHere dévil de Workbook
como wksCopyTo del
de Range
= ThisWorkbook.Sheets determinados (copyToHere determinado del
del
de 1)
wksCopyTo.Cells.Clear
= el
de wksCopyTo.Range (“a1”) n = el
de 0
en el
Application.FileSearch.Loo del curriculum vitae del error/>kIn = ThisWorkbook.Path
Application.FileSearch.FileType = el msoFileTypeExcelWorkbooks
Application.FileSearch.SearchSubFolders = el
de False
Application.FileSearch.Execute
para i = 1 a Application.FileSearch.FoundFiles.Count
si ndFiles (i)/> = wkbCopyFrom determinado indicado de ThisWorkbook.FullName entonces NotMe

= Workbooks.Open (Application.FileSearch.FoundFiles (i))
n = n + 1
con wkbCopyFrom.Sheets (“Sheet1")
copyToHere.Offset (0, 1) =. Gama (“D4”). Proyecto Name
copyToHere.Offset (0 del valor “, 2) =. Gama (“D5”). Valorar “el
de With
del final del
del
de By
“con wkbCopyFrom.Sheets (“Sheet2")
“copyToHere.Offset (0, 6) =. Gama (“J7”). Valorar del
“del final de With
con el
copyToHere.Offset (0, 30) del
de wkbCopyFrom.Sheets
(“de Sheet3l”) =. Gama (“C60”). copyToHere determinado del
de With
del final del


del valor = copyToHere.Offset (
NotMe del
wkbCopyFrom.Close False
de 1)
:
End Sub


Thank del
del i
del
usted para hechar una ojeada el class= " class= >

MSEx2007-Summary.xls del” _blank " del target= de " http://filedb.experts-exchange.com/incoming/2010/08_w34/338988/MSEx2007-Summary.xls” del href= " fileSize " > (44 KB) href= de los " attachmentDetails” del class= de (tipo de archivo detalles) nombre de fichero del " vacío del " del " vacío del " claro” class= del >
Worksheet con VBA Code
SummaryTestData.xlsx " fileSize " > (8 KB) Javascript del” href= " de los attachmentDetails del class= " de (tipo de archivo detalles) la descripción " >Worksheet del class= " de
MSEx2007-Summary.xls " fileSize " > (44 KB) Javascript del href= " de los " attachmentDetails del class=” de (tipo de archivo detalles) nombre de fichero del " vacío del " del " vacío del " claro” class= del >
Worksheet con VBA Code
SummaryTestData.xlsx " fileSize " > (8 KB) Javascript del” href= " de los attachmentDetails del class= " de (tipo de archivo detalles) >Worksheet de la descripción el " del class= de
del >
class= del

Respuesta : Las necesidades del código de VBA convirtieron MS Excel 2003 a 2007

he movido el código a un módulo, que es el lugar más común para encontrarlo.

y entonces agregado una clase que mímico la mayor parte de el Application.FileSearch.
es sobre todo el trabajo de otros pero lo fijé para buscar subfolders mejor y el impement más funciones del fileseach original.

Cargué el libro de trabajo revisado pero de otra manera….

>código<---------> revisado %ur…. el lugar en un módulo y suprime el viejo de Workbook1

copyFromFiles secundarios ()
   wksCopyTo dévil como hoja de trabajo
   wkbCopyFrom dévil como libro de trabajo
   copyToHere dévil como gama
   
   Fijar el wksCopyTo = ThisWorkbook.Sheets (1)
   wksCopyTo.Cells.Clear
   
   
   Fijar el copyToHere = wksCopyTo.Range (“a1”)
   n = 0
   
   En curriculum vitae del error después
   AppFileSearch dévil como nuevo FileSearch
   
   AppFileSearch.LookIn = ThisWorkbook.path
   AppFileSearch.fileType = “xls?”            “<>    AppFileSearch.fileName = “SummarytestData””<>    AppFileSearch.SearchSubFolders = verdad
   AppFileSearch.Execute
   
   Para i = 1 a AppFileSearch.Count
       Si AppFileSearch.FoundFiles (i) = ThisWorkbook.FullName entonces
           “saltar éste”
           'NotMe indicado
       
            Fijar el wkbCopyFrom = Workbooks.Open (AppFileSearch.FoundFiles (i))
            n = n + 1
            Con wkbCopyFrom.Sheets (“Sheet1”)
                copyToHere.Offset (0, 1) =. Gama (“A1”) .value
                copyToHere.Offset (0, 2) =. Gama (“B1”) .value
                copyToHere.Offset (0, 3) =. Gama (“C1”) .value
                copyToHere.Offset (0, 4) =. Gama (“A4”) .value
                copyToHere.Offset (0, 5) =. Gama (“B4”) .value
                copyToHere.Offset (0, 6) =. Gama (“C4”) .value
             Extremo con
           
            Fijar el copyToHere = copyToHere.Offset (1)
   
           wkbCopyFrom.Close falso
       Terminar si

   Después i
     
       
Submarino del extremo


>%place<---------------------> este código en un nuevo ClassModule y lo nombran 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:
'' por 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 dévil como secuencia
pSearchSubFolders déviles como boleanos
pFileName dévil como secuencia
pFileType dévil como secuencia

pFoundFiles públicos como nueva colección


Class_Initialize secundario privado ()
    pLookIn = “.”
    pFileType = “*”
    pFileName = “*”
    pSearchSubFolders = falso
    
Submarino del extremo
Función pública NewSearch ()
    Class_Initialize
    Fijar los pFoundFiles = nueva colección
    
Terminar la función
La característica pública consigue cuenta () como secuencia
    Cuenta = pFoundFiles.Count
Característica del extremo
La característica pública consigue FoundFiles (xx) como secuencia
    FoundFiles = pFoundFiles (xx)
Característica del extremo
La característica pública consigue LookIn () como secuencia
    LookIn = pLookIn
Característica del extremo
La característica pública dejó LookIn (el valor como secuencia)
    pLookIn = valor
Característica del extremo
La característica pública consigue SearchSubFolders () como boleana
    SearchSubFolders = pSearchSubFolders
Característica del extremo
La característica pública dejó SearchSubFolders (el valor como boleano)
    pSearchSubFolders = valor
Característica del extremo
La característica pública consigue nombre de fichero () como secuencia
    nombre de fichero = pFileName
Característica del extremo
La característica pública dejó el nombre de fichero (el valor como secuencia)
    pFileName = valor
Característica del extremo
La característica pública consigue el tipo de archivo () como secuencia
    tipo de archivo = pFileType
Característica del extremo
La característica pública dejó el tipo de archivo (el valor como secuencia)
    pFileType = valor
Característica del extremo
La función pública ejecuta () como de largo

    Amortiguar i como de largo
    Amortiguar el sLookIn como secuencia
    Amortiguar el sDirName como secuencia
    Amortiguar el sCurDir como secuencia
    Amortiguar el sFileName como secuencia
    'FF dévil como FilesFound
   
    i = 1
    'Fijar FF = nuevo FileSearchFound
    sLookIn = pLookIn
    RecurseFolder (sLookIn)
    
    
    
    Ejecutar = pFoundFiles.Count
Terminar la función

Sub RecurseFolder (el sFolderStart)
    
    sFileName = Dir (sFolderStart y “\” y pFileName y “.” y pFileType, vbNormal)
    Hacer hasta Len (sFileName) = 0

        pFoundFiles.Add (sFolderStart y “\” y sFileName)
        sFileName = Dir
    Lazo
    Si pSearchSubFolders entonces
        sDirName = Dir (sFolderStart y “\”, vbDirectory)
        FoundDirectories dévil como nueva colección, xxDir como variante
        Hacer hasta Len (sDirName) = 0
        
            sCurDir = sFolderStart y “\” y sDirName
            Si GetAttr (sCurDir) = vbDirectory y sDirName <> “.” Y sDirName <> “.” Entonces
                sCurDir de FoundDirectories.Add
            Terminar si
            sDirName = Dir
        Lazo
        Para cada xxDir en FoundDirectories
            RecurseFolder (xxDir)
        xxDir siguiente
 
    Terminar si


Terminar el submarino
Claro público de la función () como de largo
    NewSearch
Función del final
 
Libro de trabajo macro actualizado
 
Otras soluciones  
 
programming4us programming4us