Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1024to1028
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arbeitsmappen in ein einziges Tabellenblatt

Arbeitsmappen in ein einziges Tabellenblatt
18.11.2008 11:01:00
Andreas
Guten Morgen zusammen,
für eine Auswertung möchte ich die Inhalte der Tabellenblätter (jeweils um die 30) von mehreren Arbeitsmappen (ca. 10) in eine einzige Tabelle in einer neuen Datei kopieren.
Ich habe mir mit Hilfe diverser Foreneinträge und dem Recorder schon ein paar Versuche „zusammengebastelt“, es gelingt mir aber nicht die Befehle meinen Anforderungen anzupassen (falls ich sie überhaupt verstehe...).
Im Prinzip soll das Makro, alle Dateien im Verzeichnis nacheinander zu öffnen, jedes Arbeitsblatt kopieren und in eine neue Tabelle einzufügen. Die kopierten Daten sollen in der Endtabelle alle untereinander eingefügt werden.
Die angesprochenen Arbeitsmappen liegen alle im gleichen Ordner und sind von den Spalten her gleich aufgebaut. Ich brauche die Spalten A bis BA. Der für mich relevante Zeilenbereich beginnt immer in Zeile acht und variiert je nach Arbeitsblatt. Es gibt im Datenbereich Leerzeilen, d.h. wenn man von oben nach unten die erste leere Zelle in Spalte A sucht, werden mit Sicherheit nicht alle Daten kopiert.
Die Namen der Arbeitsmappen sind immer gleich aufgebaut: „DL_NameDienstleister“. Allerdings liegen im Verzeichnis auch keine irrelevanten Dateien.
Es wäre außerdem sehr hilfreich, wenn man in die Endtabelle noch eine Spalte einfügen könnte, in der automatisch der Name der Datei steht, aus der die jeweilige Zeile kopiert wurde.
Hier noch ein paar Ansätze, die ich gefunden, leider aber ohne Erfolg verfolgt habe:
Daten einfügen:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Relevanten Datenbereich kopieren:
Range(.Cells(8, 1), Cells(Row_LastNotEmpty(.Colums(1)), 54)).Copy
Verzeichnis: "C:\Documents and Settings\b9119\Desktop\Auswertungstool\Verzeichnis"
Vielen Dank im Voraus für jeden Hinweis, Link, Code, etc!!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappen in ein einziges Tabellenblatt
21.11.2008 23:13:59
Tino
Hallo,
teste mal diesen Code, Pfad musst Du natürlich noch anpassen.
Modul Modul1
Option Explicit 
Dim NewDatei As Workbook 
Sub SucheDatei() 
Dim Fso, Ordner, varDatei, strWert 
Dim SucheDatei$, sPfad$ 
Dim meCalc As Integer 
Dim i As Long 
 
sPfad = "C:\Forum"    'Pfad anpassen!!!!!!!!!!!!! 
SucheDatei = "*DL_NameDienstleister*"        'Suchfilter!!!!!!!!!!!!!!!! 
 
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set Ordner = Fso.getfolder(sPfad) 
Set NewDatei = Workbooks.Add 'neue Datei erstellen 
 
With Application 
  meCalc = .Calculation 
 .ScreenUpdating = False 
 .DisplayAlerts = False 
 .Calculation = xlCalculationManual 
     
 With NewDatei 
    'nicht benötigte Tabellen löschen 
    For i = .Sheets.Count To 2 Step -1 
      .Sheets(i).Delete 
    Next i 
     
    'Schleife über alle Dateien im Ordner 
    For Each varDatei In Ordner.Files 
     If varDatei Like SucheDatei Then 'prüfe Dateiname 
      Call LeseTabname(CStr(varDatei))  'Sub Datei lesen starten 
     End If 
    Next varDatei 
   
  End With 'NewDatei 
 .ScreenUpdating = True 
 .DisplayAlerts = True 
 .Calculation = meCalc 
End With 'Application 
 
 
 
End Sub 
 
Sub LeseTabname(strFile As String) 
Dim objDatei As Workbook 
Dim Zellen As Range, lngRow As Long 
'Datei öffnen 
Set objDatei = Workbooks.Open(strFile, False, True) 
 With NewDatei.Sheets(1) 
  'letzte Zeile bestimmen in neuer Datei 
  lngRow = .UsedRange.Cells(.UsedRange.Cells.Count).Row 
  'Leerzeilen festlegen 
  lngRow = IIf(lngRow = 1, lngRow + 1, lngRow + 2) 
  Set Zellen = .Cells(lngRow, 1) 'Rangeobjekt festlegen (neue datei) 
    Zellen = objDatei.Name 'Name der Datei 
    Zellen.Font.Bold = True 'Schrift Fett 
     'Zellen kopieren 
            objDatei.Sheets(1).Range("A8", objDatei.Sheets(1). _
                UsedRange.Cells(objDatei.Sheets(1). _
                UsedRange.Cells.Count)).Copy _
                Zellen.Offset(1, 0) 
 End With 'NewDatei.Sheets(1) 
 'Datei schließen 
 objDatei.Close False 
End Sub 
 


Gruß Tino

Anzeige
AW: Arbeitsmappen in ein einziges Tabellenblatt
25.11.2008 09:30:39
Andreas
Danke für den Tipp, hatte schon nicht mehr mit einer Antwort gerechnet. Ich werde es mal ausprobieren.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige