Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Sammeltabelle - Daten (Zeilen) aus einem Ordner welcher über 300 Tabellen verfügt in einer Tabelle sammeln.

Frage Microsoft Microsoft Office

Mitglied: yeshaya

yeshaya (Level 1) - Jetzt verbinden

13.05.2012, aktualisiert 18.10.2012, 3704 Aufrufe, 11 Kommentare

Hallo zusammen,

auf der Arbeit benötige ich um effektiver arbeiten zu können eine Sammeltabelle.

Ich vermute das ganze wird über Makro laufen, aber da ich in diesem Bereich ein Neuling bin, bitte ich euch um Hilfe

Nun zu meinem "Problem":

- Ich benötige aus einem Ordner alle Excel-Tabellen in einer Tabelle per Knopfdruck eingesammelt.
Quellordner: F:\_Sublisten1

- Aus den Tabellen benötige ich alle Zeilen ab der Zeile 9 (Zeilen Anzahl variiert von 3-150)

- Alle Tabellen sind von den Spalten gleich eingeteilt


Dürfte nicht schwer sein?! Aber für mich schon... Daher wäre eine Beispieldatei bei der ich nur auf ein Knöpf drücken müsste nett Habe alle Foren durchsucht aber nie genau diesen Fall gefunden. Wäre super wenn Ihr mir hier helfen könntet!


Vielen Dank!!!!
Mitglied: bastla
13.05.2012, aktualisiert 18.10.2012
Hallo yeshaya und willkommen im Forum!
Habe alle Foren durchsucht aber nie genau diesen Fall gefunden.
Vielleicht helfen Dir aber ähnliche Fälle (und da war noch nicht mal Dieter beteiligt ):
http://www.administrator.de/forum/mehrer-excel-tabellen-mit-mehreren-bl ...
http://www.administrator.de/forum/mehrere-exceldateien-in-eine-excel-da ...
http://www.administrator.de/forum/makro-zum-transponieren-von-daten-aus ...
http://www.administrator.de/forum/inhalte-aus-excel-dateien-in-sammeldo ...

Da ich momentan nicht gerade viel Zeit erübrigen kann [Edit] "viel" ist relativ [/Edit] , versuch doch erst mal selbst, etwas daraus zu basteln (und falls Du dann noch weitere Unterstützung benötigst, erkläre mal genauer, wie zB die Anzahl "3-150" zu ermitteln wäre) ...

Grüße
bastla
Bitte warten ..
Mitglied: yeshaya
13.05.2012 um 18:33 Uhr
Hallo Bastla, danke fürs antworten.

Habe diese Seiten auch schon durchgeschaut, nur sind hier ja einzelne Zellen, oder einzelne Zeilen gemeint. Und da komm ich einfach nicht weiter

Mit Zeilen Anzahl 3-150 meine ich das ab Zeile 9 nur 3 Zeilen belegt sein können, sprich Zeile 9-12. Aber in einer anderen Tabelle wieder rum 9-97 belegt sein können.

Denke das einfachste wäre einfach zu sagen die Sammeltabelle soll von allen Exceltabellen aus diesem Pfad die Zeilen 9-150 ziehen. (Falls notwendige Angabe Spalten A-J)
Denn dann kann ich die Sammeltabelle nach Datum sortieren und die leeren Zeilen fallen mir automatisch unten raus...

also nochmals kurz zusammengefasst:

aus einem bestimmten Pfad
aus allen Excel Tabellen in dem Ordner
Zeilen 9-150 Spalte A-J

Ich hoffe mir kann jemand helfen =)
Bitte warten ..
Mitglied: bastla
13.05.2012 um 18:52 Uhr
Hallo yeshaya!

Unter der Annahme, dass aus dem jeweils ersten Tabellenblatt jeder Datei Daten aus allen Zeilen (ab Zeile 9) übernommen werden sollen, bis in Spalte A kein Wert mehr steht, ungetestet etwa so:
01.
Sub Sammeln() 
02.
sQuellpfad = "F:\_Sublisten1" 
03.
 
04.
QZeileAb = 9 'Ab dieser Zeile in Quelldatei Daten übernehmen 
05.
QSpalten = 10 'Spaltenanzahl (A-J) 
06.
QSpalteAb = "A" ' ab dieser Spalte insgesamt "QSpalten" Spaltenwerte übernehmen 
07.
 
08.
ZZeile = 2 'erste Zeile in Zieldatei 
09.
ZSpalteAb = "A" 'erste Spalte in Zieldatei 
10.
 
11.
Set wbGes = ActiveWorkbook 
12.
Set fso = CreateObject("Scripting.FileSystemObject") 
13.
 
14.
For Each oFile In fso.GetFolder(sQuellpfad).Files 
15.
    If LCase(Left(fso.GetExtensionName(oFile.Name), 3)) = "xls" Then 'nur ".xls*"-Dateien verarbeiten 
16.
        Application.Workbooks.Open oFile.Path 'Quelldatei öffnen 
17.
        QZeile = QZeileAb 'Startzeile der Quelldatei setzen 
18.
        Do While ActiveWorkbook.Worksheets(1).Cells(QZeile, QSpalteAb).Value <> "" 'Daten übernehmen, wenn in erster Spalte ein Wert steht, ansonsten Datei fertig 
19.
            wbGes.Worksheets(1).Cells(ZZeile, ZSpalteAb).Resize(1, QSpalten).Value = ActiveWorkbook.Worksheets(1).Cells(QZeile, QSpalteAb).Resize(1, QSpalten).Value 
20.
            QZeile = QZeile + 1 'Zeilennummer Quelldatei erhöhen 
21.
            ZZeile = ZZeile + 1 'Zeilennummer Zieldatei erhöhen 
22.
        Loop 
23.
        ActiveWorkbook.Close False 'Quelldatei schließen 
24.
    End If 
25.
Next 
26.
 
27.
wbGes.Save 'Zieldatei speichern 
28.
End Sub
Die Sammeldatei darf nicht im Ordner "F:\_Sublisten1" liegen, da sie sich ansonsten "selbst verarbeiten" würde ...
Falls Du das wirklich auf die Zeilen 9 bis 150 fixieren wolltest, dann:
01.
Sub Sammeln() 
02.
sQuellpfad = "F:\_Sublisten1" 
03.
 
04.
QZeileAb = 9 'Ab dieser Zeile in Quelldatei Daten übernehmen 
05.
QZeileBis = 150 'Bis zu dieser Zeile in Quelldatei Daten übernehmen 
06.
QSpalten = 10 'Spaltenanzahl (A-J) 
07.
QSpalteAb = "A" ' ab dieser Spalte insgesamt "QSpalten" Spaltenwerte übernehmen 
08.
 
09.
ZZeile = 2 'erste Zeile in Zieldatei 
10.
ZSpalteAb = "A" 'erste Spalte in Zieldatei 
11.
 
12.
Set wbGes = ActiveWorkbook 
13.
Set fso = CreateObject("Scripting.FileSystemObject") 
14.
 
15.
For Each oFile In fso.GetFolder(sQuellpfad).Files 
16.
    If LCase(Left(fso.GetExtensionName(oFile.Name), 3)) = "xls" Then 'nur ".xls*"-Dateien verarbeiten 
17.
        Application.Workbooks.Open oFile.Path 'Quelldatei öffnen 
18.
        For QZeile = QZeileAb To QZeileBis 
19.
            wbGes.Worksheets(1).Cells(ZZeile, ZSpalteAb).Resize(1, QSpalten).Value = ActiveWorkbook.Worksheets(1).Cells(QZeile, QSpalteAb).Resize(1, QSpalten).Value 
20.
            ZZeile = ZZeile + 1 'Zeilennummer Zieldatei erhöhen 
21.
        Next 
22.
        ActiveWorkbook.Close False 'Quelldatei schließen 
23.
    End If 
24.
Next 
25.
 
26.
wbGes.Save 'Zieldatei speichern 
27.
End Sub
bzw schneller
01.
Sub Sammeln() 
02.
sQuellpfad = "F:\_Sublisten1" 
03.
 
04.
QZeileAb = 9 'Ab dieser Zeile in Quelldatei Daten übernehmen 
05.
QZeilen = 150 'Anzahl Zeilen aus Quelldatei übernehmen 
06.
QSpalten = 10 'Spaltenanzahl (A-J) 
07.
QSpalteAb = "A" ' ab dieser Spalte insgesamt "QSpalten" Spaltenwerte übernehmen 
08.
 
09.
ZZeile = 2 'erste Zeile in Zieldatei 
10.
ZSpalteAb = "A" 'erste Spalte in Zieldatei 
11.
 
12.
Set wbGes = ActiveWorkbook 
13.
Set fso = CreateObject("Scripting.FileSystemObject") 
14.
 
15.
For Each oFile In fso.GetFolder(sQuellpfad).Files 
16.
    If LCase(Left(fso.GetExtensionName(oFile.Name), 3)) = "xls" Then 'nur ".xls*"-Dateien verarbeiten 
17.
        Application.Workbooks.Open oFile.Path 'Quelldatei öffnen 
18.
        wbGes.Worksheets(1).Cells(ZZeile, ZSpalteAb).Resize(QZeilen, QSpalten).Value = ActiveWorkbook.Worksheets(1).Cells(QZeile, QSpalteAb).Resize(QZeilen, QSpalten).Value 
19.
        ZZeile = ZZeile + QZeilen 'Zeilennummer Zieldatei erhöhen 
20.
        ActiveWorkbook.Close False 'Quelldatei schließen 
21.
    End If 
22.
Next 
23.
 
24.
wbGes.Save 'Zieldatei speichern 
25.
End Sub
Grüße
bastla

[Edit] Jeweils fehlendes "s" nachgetragen [/Edit]
Bitte warten ..
Mitglied: 76109
13.05.2012 um 19:31 Uhr
@bastla

Vielleicht helfen Dir aber ähnliche Fälle (und da war noch nicht mal Dieter beteiligt ):
Na, dann gebe ich doch wenigstens hier meinen Senf dazu

Du solltest Dich eventuell noch für "Quellpfad" oder "sQuellpfad" entscheiden

Noch einen schönen Sonntag!

Gruß Dieter
Bitte warten ..
Mitglied: yeshaya
13.05.2012 um 20:39 Uhr
ha es funktioniert nun auch so wuhu vielen lieben dank und ja dieter das hab i au rausgefunde xD

danke danke danke schoenen abend noch!!
Bitte warten ..
Mitglied: bastla
13.05.2012 um 21:02 Uhr
Hallo Dieter!

Danke für die Geschmacksverbesserung - ich hatte nur mal eben (dieses Mal bei mir selbst ) "geborgt" ...

Grüße und auch einen schönen Wochendrest
bastla
Bitte warten ..
Mitglied: bastla
13.05.2012 um 21:06 Uhr
Hallo yeshaya!

Freut micht, wenn's passt.

Grüße
bastla

P.S.: Du könntest noch einen dieser erfreulichen (grünen) Haken an den Thread machen ...
Bitte warten ..
Mitglied: Mr-Lanzelot
10.09.2012 um 14:04 Uhr
Hallo,

nochmals vielen Dank für den sehr anschaulichen Code.

Ich habe jetzt den Fall, dass die Dateien, die aufgerufen werden, allesamt mit demselben Passwort geschützt sind.
Leider habe ich es bisher noch nicht hinbekommen, das Passwort im Makro so zu hinterlegen, damit es automatisch eingegeben werden kann, oder Usereingriff.

Hat mir hier vielleicht jemand einen Tipp?

Vielen Dank schon mal vorab für eure Hilfe!

Gruß
L.
Bitte warten ..
Mitglied: 76109
11.09.2012, aktualisiert um 11:04 Uhr
Hallo Mr-Lanzelot!

Falls das Passwort zum Öffnen der Arbeitsmappe gemeint ist, dann so:
01.
Application.Workbooks.Open oFile.Path, Password:="Passwort"
oder einmaliger Eingabe per InputBox (sichtbar) vor der For-Each-Schleife:
01.
Sub Sammeln()  
02.
    '.... 
03.
     
04.
    sPassword = Application.InputBox("Bitte Passwort eingeben:", "Passwort...", Type:=2) 
05.
     
06.
    If sPassword = "" Then 
07.
        MsgBox "Abbruch: Passwort ungültig!", vbExclamation, "Passwort...":  Exit Sub 
08.
    End If 
09.
     
10.
    '.... 
11.
     
12.
    For Each oFile In fso.GetFolder(sQuellpfad).Files  
13.
        '....        
14.
       Application.Workbooks.Open oFile.Path, Password:=sPassword
Für eine typische Passwort-Eingabe würdest Du eine UserForm benötigen...

Gruß Dieter
Bitte warten ..
Mitglied: Mr-Lanzelot
11.09.2012 um 11:14 Uhr
Hallo Dieter,

tausend Dank!

Gruß
L.
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Microsoft Office
Kopieren von auszuwählenden Daten in weitere Tabelle (1)

Frage von dus100 zum Thema Microsoft Office ...

Microsoft Office
Excel Daten aus diversen Tabellen sammeln (9)

Frage von FitforLife zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...