Frage : VBA Codenotwendigkeiten wandelten von MS Excel 2003 bis 2007 um

Hallo hat Experten,

The Excel Arbeitsbuch, dem ich pflege, um mehrfache Arbeitsbücher in eins für Bericht zu vereinigen, das Arbeiten gestoppt, weil einige der Excel-Methoden 2003 nicht in MS Excel 2007 vorhanden sind. Der Code liest jedes mögliches Arbeitsbuch in einem gegebenen Verzeichnis durch und zieht die Daten die spezifizierte Zelle heraus.

I dachte ursprünglich, dass das Problem an der Makrosicherheit lag oder an verlässlichen Wegen aber das beseitigt, indem es es 2003 prüfte - es war dort adaequat.

Can eins von Ihnen schreiben bitte den Code unten neu, um in MS Excel 2007 zu arbeiten? Die eine Methode, die ich weiß, arbeitet nicht sicher ist FIleSearch.

I haben Beispielakten zu den Testzwecken neu erstellt:
File MSEx2007 hat den Code, der wenn das die Daten von zusammenfassendem TestData lädt.

Sub copyFromFiles ()
verdunkeln wksCopyTo als Worksheet
schwaches wkbCopyFrom als Workbook
schwaches copyToHere wie Range

gesetztes wksCopyTo = ThisWorkbook.Sheets (1)
wksCopyTo.Cells.Clear


gesetztes copyToHere = wksCopyTo.Range („a1“)
n = 0

auf Störungs-Zusammenfassung Next

Application.FileSearch.LookIn = ThisWorkbook.Path
Application.FileSearch.FileType = msoFileTypeExcelWorkbooks
Application.FileSearch.SearchSubFolders = False
Application.FileSearch.Execute

für i = 1 zu Application.FileSearch.FoundFiles.Count
wenn Application.FileSearch.FoundFiles (i) = ThisWorkbook.FullName dann Goto- NotMe

gesetztes wkbCopyFrom = Workbooks.Open (Application.FileSearch.FoundFiles (i))
n = n + 1
mit wkbCopyFrom.Sheets („Sheet1")
copyToHere.Offset (0, 1) =. Strecke („D4“). Wert-„Projekt Name
copyToHere.Offset (0, 2) =. Strecke („D5“). „Erbetenes By


Ende With

„mit wkbCopyFrom.Sheets („Sheet2")
„copyToHere.Offset (0 bewerten, 6) =. Strecke („J7“).
bewerten „Ende With
mit wkbCopyFrom.Sheets
(„Sheet3l“)

copyToHere.Offset (0, 30) =. Strecke („C60“). Wert


Ende With

gesetztes copyToHere = copyToHere.Offset (1)

wkbCopyFrom.Close False

NotMe:
folgendes i


End Sub


Thank Sie für einen Blick am this.

Steph M.
Worksheet mit VBA Code
Worksheet, die Daten für extraction
Worksheet mit VBA Code
Worksheet, das enthält, Daten für extraction

Antwort : VBA Codenotwendigkeiten wandelten von MS Excel 2003 bis 2007 um

ich habe den Code auf ein Modul verschoben, das der allgemeinere Platz ist, zum er zu finden.

und eine Kategorie dann am meisten addiert die Nachahmer des Application.FileSearch.
es ist meistens die Arbeit von anderen, aber ich reparierte sie, um Subfolders und impement besser zu suchen mehr Funktionen des ursprünglichen fileseach.

Ich lud das korrigierte Arbeitsbuch aber anders….

>%ur<---------> korrigierter Code…. Platz in ein Modul und löschen das alte aus Workbook1

VorcopyFromFiles ()
   Schwaches wksCopyTo als Arbeitsblatt
   Schwaches wkbCopyFrom als Arbeitsbuch
   Schwaches copyToHere als Strecke
   
   wksCopyTo = ThisWorkbook.Sheets einstellen (1)
   wksCopyTo.Cells.Clear
   
   
   copyToHere = wksCopyTo.Range („a1“) einstellen
   n = 0
   
   Auf Störungs-Zusammenfassung zunächst
   Schwaches AppFileSearch als neues FileSearch
   
   AppFileSearch.LookIn = ThisWorkbook.path
   AppFileSearch.fileType = „xls?“            „<>    AppFileSearch.fileName = „SummarytestData““<>    AppFileSearch.SearchSubFolders = richten aus
   AppFileSearch.Execute
   
   Für i = 1 zu AppFileSearch.Count
       Wenn AppFileSearch.FoundFiles (i) = ThisWorkbook.FullName dann
           „dieses überspringen“
           'Goto- NotMe
       Sonst
            wkbCopyFrom = Workbooks.Open (AppFileSearch.FoundFiles (i)) einstellen
            n = n + 1
            Mit wkbCopyFrom.Sheets („Sheet1“)
                copyToHere.Offset (0, 1) =. Strecke („A1“) .value
                copyToHere.Offset (0, 2) =. Strecke („B1“) .value
                copyToHere.Offset (0, 3) =. Strecke („C1“) .value
                copyToHere.Offset (0, 4) =. Strecke („A4“) .value
                copyToHere.Offset (0, 5) =. Strecke („B4“) .value
                copyToHere.Offset (0, 6) =. Strecke („C4“) .value
             Ende mit
           
            copyToHere = copyToHere.Offset einstellen (1)
   
           wkbCopyFrom.Close falsch
       Beenden wenn

   Zunächst I
     
       
Enden-Unterseeboot


>%place<---------------------> dieser Code in ein neues ClassModule und nennen es 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:
6:
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:
'' durch 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


Schwaches pLookIn als Schnur
Schwache pSearchSubFolders, wie Boolesch
Schwaches pFileName als Schnur
Schwaches pFileType als Schnur

Allgemeine pFoundFiles als neue Ansammlung


Privates VorClass_Initialize ()
    pLookIn = „.“
    pFileType = „*“
    pFileName = „*“
    pSearchSubFolders = falsch
    
Enden-Unterseeboot
Allgemeine Funktion NewSearch ()
    Class_Initialize
    pFoundFiles einstellen = neue Ansammlung
    
Funktion beenden
Staatseigentum erhalten Zählimpuls () als Schnur
    Zählimpuls = pFoundFiles.Count
Enden-Eigentum
Staatseigentum erhalten FoundFiles (xx) als Schnur
    FoundFiles = pFoundFiles (xx)
Enden-Eigentum
Staatseigentum erhalten LookIn () als Schnur
    LookIn = pLookIn
Enden-Eigentum
Staatseigentum ließ LookIn (Wert als Schnur)
    pLookIn = Wert
Enden-Eigentum
Staatseigentum erhalten SearchSubFolders () wie Boolesch
    SearchSubFolders = pSearchSubFolders
Enden-Eigentum
Staatseigentum ließ SearchSubFolders (Wert, wie Boolesch)
    pSearchSubFolders = Wert
Enden-Eigentum
Staatseigentum erhalten Dateinamen () als Schnur
    Dateiname = pFileName
Enden-Eigentum
Staatseigentum ließ Dateinamen (Wert als Schnur)
    pFileName = Wert
Enden-Eigentum
Staatseigentum erhalten fileType () als Schnur
    fileType = pFileType
Enden-Eigentum
Staatseigentum ließ fileType (Wert als Schnur)
    pFileType = Wert
Enden-Eigentum
Allgemeine Funktion führen () als lang durch

    I als lang verdunkeln
    sLookIn als Schnur verdunkeln
    sDirName als Schnur verdunkeln
    sCurDir als Schnur verdunkeln
    sFileName als Schnur verdunkeln
    'Schwacher FF als FilesFound
   
    I = 1
    'Einstellen FF = neues FileSearchFound
    sLookIn = pLookIn
    RecurseFolder (sLookIn)
    
    
    
    Durchführen = pFoundFiles.Count
Funktion beenden

Sub RecurseFolder (sFolderStart)
    
    sFileName = Dir (sFolderStart u. „\“ u. pFileName u. „.“ u. pFileType, vbNormal)
    Bis Len (sFileName) = 0 tun

        pFoundFiles.Add (sFolderStart u. „\“ u. sFileName)
        sFileName = Dir
    Schleife
    Wenn pSearchSubFolders dann
        sDirName = Dir (sFolderStart u. „\“, vbDirectory)
        Schwaches FoundDirectories als neue Ansammlung, xxDir als Variante
        Bis Len (sDirName) = 0 tun
        
            sCurDir = sFolderStart u. „\“ u. sDirName
            Wenn GetAttr (sCurDir) = vbDirectory und sDirName <> „.“ Und sDirName <> „.“ Dann
                FoundDirectories.Add sCurDir
            Beenden wenn
            sDirName = Dir
        Schleife
        Für jedes xxDir in FoundDirectories
            RecurseFolder (xxDir)
        Folgendes xxDir
 
    Beenden wenn


Unterseeboot beenden
Allgemeiner Funktions-freier Raum () als lang
    NewSearch
Enden-Funktion
 
Modernisiertes Makroarbeitsbuch
 
Weitere Lösungen  
 
programming4us programming4us