Ich bin sehr neu in Excel VBA und habe eine Frage zum Abrufen von Daten aus mehreren Excel-Arbeitsmappe zum Noew.
ich hier erklären:
1. In einem Hauptordner ("C:\desktop\Main\"
) gibt es mehrere Unterordner in es (hier nehme ich folder A1
und folder A2
als Beispiel). "C:\desktop\Main\A1\"
& "C:\desktop\Main\A2\"
In jedem Unterordner sind mehrere Hervorhebungen enthalten.
Zum Beispiel: In folder A1
gibt es 2 Ordner (A1-2015.xlsx
und A1-2016.xlsx
) "C:\desktop\Main\A1\A1-2015.xlsx"
und "C:\desktop\Main\A1\A1-2016.xlsx"
In folder A2
gibt es 3 Ordner (A2-2015.xlsx
, A2-2016.xlsx
und A2-2017.xlsx
)
I-Zellen in diesen zeichnet sich in neue Excel-Arbeitsmappe erhalten möchten .
2. Also, basierend auf der Erklärung zu item1. Ich nehme einen von A1 (A1-2016.xlsx
) und einen von A2 (A2-2017.xlsx
) zum Beispiel.
A1 sieht wie oben aus.
A2 enthält die gleiche Vorlage in den festen Zellen mit unterschiedlichen Zahlen/Zeichen darin.
3. Ich möchte sie wie folgt abrufen:
Alle Excels haben feste Vorlage wie im obigen Beispiel.
Wie kann ich tun, wenn ich mehrere Ordner mit mehreren Excel in es habe? Danke.Erhalten Sie feste Zellen in mehreren Excel zu dem neuen
0
A
Antwort
3
Dies hängt davon ab, ob Sie wissen, wie viele Ebenen von Unterordnern Sie unter dem Hauptordner haben. Wenn dies vorhersehbar ist, z.B. Sie wissen, dass es nur die folgenden zwei Ebenen gibt (Main> A1), dann ist es ziemlich einfach. Sie möchten Dateisystemobjekte verwenden (Sie müssen einen Verweis auf Microsoft Scripting Runtime über das Menü Werkzeuge> Referenzen hinzufügen).
Sobald Sie das hinzugefügt haben, verwenden Sie den folgenden Code, um die Arbeit für Sie zu erledigen (Sie müssen möglicherweise etwas anpassen, da ich hauptsächlich rate, welche Informationen aus den Dateien in die Hauptdatei zusammengeführt werden sollen) :
Sub Merge_Files()
Dim FSO As New FileSystemObject
Dim Main_Fold As Folder, Sub_1 As Folder
Dim Fil As File
Dim Main_WB As Workbook, New_WB As Workbook
Dim X As Integer, Y As Integer
Set Main_WB = ActiveWorkbook
Set Main_Fold = FSO.GetFolder("C:\Desktop\Main\") 'Replace this with a reference to your actual main folder.
For Each Sub_1 In Main_Fold.subFolders
For Each Fil In Sub_1.Files
Set New_WB = Workbooks.Open(Fil.Path)
For X = 2 To 1000
If Main_WB.Sheets(1).Range("A" & X).Value = "" Then
Main_WB.Sheets(1).Range("A" & X).Value = New_WB.Sheets(1).Range("C2").Value
Exit For
End If
If Main_WB.Sheets(1).Range("A" & X).Value = New_WB.Sheets(1).Range("C2").Value Then Exit For
Next X
For Y = 2 To 5
Main_WB.Sheets(1).Cells(X, Y) = New_WB.Sheets(1).Range("C" & (Y + 1)).Value
Next Y
For Y = 4 To 9
If Y = 6 Then Y = 7
If Y < 6 Then
Main_WB.Sheets(1).Cells(X, Y + 2) = New_WB.Sheets(1).Cells(9, Y)
Else
Main_WB.Sheets(1).Cells(X, Y + 1) = New_WB.Sheets(1).Cells(9, Y)
End If
Next Y
Main_WB.Sheets(1).Range("K" & X).Value = New_WB.Sheets(1).Range("K21").Value
New_WB.Close SaveChanges:=False
Next Fil
Next Sub_1
End Sub
Verwandte Themen
- 1. Transponieren Sie eine feste Anzahl von Zellen aus mehreren Zeilen in eine einzige Spalte in Excel
- 2. Excel-Suchzeichenfolge in Zellen von mehreren Wörtern
- 3. Hinzufügen führender Nullen zu mehreren Zellen in Excel auf einmal
- 4. VBA Excel: Ergebnis für mehrere Zellen erhalten
- 5. Excel bedingte Formatierung basierend auf mehreren Zellen
- 6. Excel VBA-Makro von einer Zelle zu mehreren Zellen
- 7. Excel VBA verfolgen Änderungen an mehreren Zellen
- 8. Excel Zellen zu ADODB.Recordset
- 9. Excel 2013 So weisen Sie Zellen Zellen zu
- 10. Excel VBA Makro zum Kopieren der verwendeten Zellen in mehreren Excel zu einem Excel
- 11. Verwenden If-Anweisung in Excel, um Zellen in mehreren Blättern
- 12. In Excel-gesperrte Zellen einfügen
- 13. Holen Sie Zellen in Excel, um mit Zellen in verschiedenen Zeilen mit Python zu verschmelzen?
- 14. Python zu extrahieren Excel-Zellen
- 15. Excel-Zellen Wert erhalten, wenn Zellen einen bestimmten Text enthalten
- 16. Excel bedingte Formatierung basierend auf den mehreren Zellen und Werten
- 17. Weisen Sie mehreren Zellen in Matlab einen Wert zu
- 18. C# Excel Schreiben Sie in mehrere Zellen
- 19. Wert aus Bereich erhalten, wenn Zellen in Excel übereinstimmen
- 20. Kombinieren Sie mehrere Zellen zu einer in Excel mit Makro?
- 21. Konvertieren leere Zellen zu NaN in Excel
- 22. Normalisierung Zeilenenden in Excel-Zellen
- 23. UILabel feste Breite/feste Höhe erhalten Textnummer
- 24. kopieren Sie zufällige mehrere Excel-Zellen in eine einzige Zeile
- 25. Suche Zellen in Excel für String
- 26. Excel-Sheet-Zellen zu verschiedenen Blättern
- 27. Verschieben Sie die boolesche Liste in Excel in neue Zellen
- 28. Formatieren von Zellen in Excel mit Python
- 29. Excel-Zellen-Kontextmenü - Makro
- 30. Kopieren Sie nur Zellen mit Daten von Excel zu Word
Könnten Sie bitte den Code für mich erklären, weil ich neu in VBA bin. 'Für X = 2 bis 1000' und' Für Y = 2 bis 5', kann ich hier nicht klar verstehen.Vielen Dank –
Der Code durchläuft also jeden Unterordner im Hauptordner (in dem Sie die Adresse bearbeiten müssen) und Durchläuft dann jeden Unterordner dieses Ordners (insgesamt 3 Ebenen). Es durchläuft dann jede Datei in diesen Ordnern (unter der Annahme, dass nur Excel-Dateien darin enthalten sind) und öffnet dann jede Datei, um die angeforderten Werte zu kopieren (ich vermutete dies basierend auf dem, was Sie auf den Screenshots gezeigt haben). Sobald es die Werte über es kopiert hat, schließt die Excel-Arbeitsmappe (verarbeitet nicht Haupt) und speichert keine Änderungen (um zu vermeiden, versehentlich Ihre ursprünglichen Daten zu ändern). – Sercho
Ich würde empfehlen, dass Sie kopieren und in VBA einfügen, ändern Sie den Speicherort in der Zeile "Set Main_Fold = FSO.GetFolder ..." zu Ihrem Hauptordner und dann mit der Taste F8, um durch den Code und buchstäblich was zu sehen Es ist der beste Weg zu lernen, wie VBA funktioniert und was Sie tun können. – Sercho