Top-Themen

Aktuelle Themen (A bis Z)

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, 3737 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 ..
Ähnliche Inhalte
Microsoft Office
Excel Daten aus diversen Tabellen sammeln
Frage von FitforLifeMicrosoft Office9 Kommentare

Hallo, habe folgendes Aufgabe zu lösen: Es bestehen diverse Sheets. Beispielhaft hier auf 3 reduziert. Auf Sheet 1 und ...

Microsoft Office
Kopieren von auszuwählenden Daten in weitere Tabelle
Frage von dus100Microsoft Office1 Kommentar

Hallo, wie einige andere auch habe ich ein Problem bei der Erstellung von Makros in VBA. Ich nutzeExcel für ...

Datenbanken
Werte aus einer Tabelle ersetzen Werte aus einer anderen Tabelle
Frage von neotm1Datenbanken2 Kommentare

Hallo, ich versuche mit MSSQL eine Abfrage hinzubekommen, in der Werte Aus Tabelle1 Spalte2 in eine andere Tabelle schreibt, ...

Datenbanken
MySQL Daten in Tabelle A und AUTOINCREMENT-Feld als Schlüsselgenerator in Tabelle B
Frage von CodehunterDatenbanken3 Kommentare

Hallo! Ich möchte eine Tabelle (B) mit einer einzigen Spalte, welche ein AUTO_INCREMENT ist, als Schlüsselgenerator für eine andere ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 10 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 11 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...