Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

Tabellenblatt in 5000 xls kopieren

Tabellenblatt in 5000 xls kopieren
Stefan
Hallo Zusammen,
habe ein Problem mit dem ich nicht mehr weiter komme.
Habe in einem Ordner ca.5000 Excellisten.
Möchte nun über ein Macro dieses Tabellenblatt in alle 5000 xls reinkopieren...
Habe so was ähnliches mit Einträgen in ein Tabellenblatt schon mal bekommen.
Kann es leider nicht für ein komplettes Tabellenblatt umschreiben.
Wer ist in VBA so fitt, dass er mir da unter die Arme greifen könnte ?
Vielen Dank schon mal vorab...
Stefan
Hier der Code den es umzuschreiben gilt...
Sub schreibe_in_Arbeitsmappen()
Application.ScreenUpdating = False
Dim wb As Workbook
Dim shFiles As Worksheet
Dim vAdresse, vValue, vTable As String
vTable = ActiveSheet.Name
Dim vPath As String
vPath = "C:\Temp\Test\"
Set wb = ThisWorkbook
fb = False
Call DateienAuslesen(vPath, wb.Name)
Set shFiles = wb.Sheets("Dateiliste")
Sheets(vTable).Select
vAdresse = ActiveCell.Address
vValue = ActiveCell.Value
For Each d In shFiles.Range("A1:A" & shFiles.Cells(Rows.Count, 1).End(xlUp).Row)
Workbooks.Open Filename:=vPath & d
On Error GoTo fb_schreiben
Sheets(vTable).Range(vAdresse) = vValue
If fb = True Then
lz = wb.Sheets("Logbuch").Cells(Rows.Count, 1).End(xlUp).Row + 1
wb.Sheets("Logbuch").Cells(lz, 1) = Now()
wb.Sheets("Logbuch").Cells(lz, 2) = "Daten nicht geschrieben in:"
wb.Sheets("Logbuch").Cells(lz, 3) = d
End If
ActiveWorkbook.Close savechanges:=True
Next
Application.DisplayAlerts = False
shFiles.Delete
Application.DisplayAlerts = True
Exit 

Sub
fb_schreiben:
fb = True
Resume Next
End 

Sub

Sub DateienAuslesen(vPath, wbName As String)
Dim fs, f, f1, fc, i
On Error Resume Next
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Dateiliste"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(vPath)
Set fc = f.Files
i = 0
For Each f1 In fc
If Right(f1.Name, 4) = ".xls" And f1.Name  wbName Then
i = i + 1
ActiveSheet.Cells(i, 1) = f1.Name
End If
Next
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
kannst diese mal testen
29.07.2010 12:31:51
Tino
Hallo,
teste mal diese Version.
Sub schreibe_in_Arbeitsmappen()
Dim ExWB As Workbook
Dim CopyTab As Worksheet
Dim vPath, iIndex As Integer
Dim booError As Boolean

'hier die Tabelle angeben die kopiert werden soll 
Set CopyTab = ThisWorkbook.Sheets("Tabelle2")

'wo befinden sich die Dateien? 
vPath = "G:\1 Forum\Test" ' "C:\Temp\Test\" 

'Dateien ermitteln und als Array zurückgeben 
Call DateienAuslesen(vPath)

If IsArray(vPath) Then
    Application.ScreenUpdating = False
    
    For iIndex = Lbound(vPath) To Ubound(vPath)
        On Error GoTo ErrH:
        Set ExWB = Workbooks.Open(Filename:=vPath(iIndex))
        If Not ExWB Is Nothing Then
            CopyTab.Copy After:=ExWB.Sheets(ExWB.Sheets.Count)
            If Not booError Then
                ExWB.Close savechanges:=True
            Else
                booError = False
                ExWB.Close savechanges:=False
            End If
        End If
        Set ExWB = Nothing
    Next
    
    Application.ScreenUpdating = True
End If

Exit Sub

ErrH:
booError = True
Resume Next
End Sub



Sub DateienAuslesen(ByRef vPath)
Dim ofso As Object, oF1 As Object, i%
Dim ArPath()

On Error Resume Next

Set ofso = CreateObject("Scripting.FileSystemObject")
Set oF1 = ofso.GetFolder(vPath)
Set oF1 = oF1.Files

If Not oF1 Is Nothing Then
    For Each oF1 In oF1
        If Right(oF1.Name, 4) = ".xls" And oF1.Name <> ThisWorkbook.Name Then
            Redim Preserve ArPath(i)
            ArPath(i) = oF1
            i = i + 1
        End If
    Next
End If

If i > 0 Then vPath = ArPath
End Sub
Gruß Tino
Anzeige
AW: kannst diese mal testen
29.07.2010 12:42:07
Stefan
Wunderbar wunderbar schön schön
Danke
funktioniert so wie ich es haben wollte !
Danke Tino
:-)
Stefan
eine Änderung müsstest Du noch machen...
29.07.2010 13:50:28
Tino
Hallo,
setze booError = False auserhalb der If von If Not ExWB Is Nothing Then.
        If Not ExWB Is Nothing Then
CopyTab.Copy After:=ExWB.Sheets(ExWB.Sheets.Count)
If Not booError Then
ExWB.Close savechanges:=True
Else
ExWB.Close savechanges:=False
End If
End If
booError = False
Gruß Tino

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige