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

Bestimmtes Tabellenblatt in verschiedene Dateien k

Bestimmtes Tabellenblatt in verschiedene Dateien k
03.02.2009 20:42:00
Peter
Liebes Forum, ich habe ein Excel Problem und hoffe, dass man es mit VBA lösen kann.
Ich habe ca. 100 Excel Dateien, in denen jeweils ein bestimmtes Tabellenblatt ausgetauscht werden muss. Die Dateien sind alle gleich aufgebaut und liegen im Verzeichnis (c:\dcf).
Das auszutauschende Tabellenblatt heißt "Data" und soll in jeder Datei gelöscht und dann durch ein Tabellenblatt, das ebenfalls "Data" heißt, ersetzt werden. (Die aktuelle Version des "Data" Tabellenblattes befindet sich in der Datei "Data_neu.xls"
Folgendes sollte also passieren:
1. Öffnen der Datei „Data-Sheet“ und kopieren des „Data“ Tabellenblattes
2. Löschen des alten „Data-Sheets“ in jeder der 100 Dateien und ersetzen durch die neue Variante , welche in der Datei "Data_neu.xls" liegt-
3. Schließen und Speichern der Dateien
Leider bin ich ein VBA Rookie und bin damit überfordert...Fände es klasse, wenn Ihr mir weiterhelfen könntet.
Vielen Dank und Grüße

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmtes Tabellenblatt in verschiedene Dateien k
03.02.2009 21:01:55
Josef
Hallo Peter,
der Code gehört in die Datei "Data_neu.xls".
Teste den Code zuerst an einigen Kopien der Dateien!
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub replaceSheet()
    Dim objWSNew As Worksheet, objWS As Worksheet
    Dim objWB As Workbook
    Dim strPath As String, strFile As String
    Dim intIndex As Integer
    
    On Error GoTo ErrExit
    GMS
    
    Set objWSNew = ThisWorkbook.Sheets("Data")
    
    strPath = "C:\dcf"
    
    strFile = Dir(strPath & "*.xls")
    
    Do While strFile <> ""
        If strFile <> ThisWorkbook.FullName Then
            Set objWB = Workbooks.Open(strFile)
            
            For Each objWS In objWB.Worksheets
                If objWS.Name = "Data" Then
                    intIndex = objWS.Index
                    objWS.Delete
                    objWSNew.Copy before:=objWB.Sheets(intIndex)
                End If
            Next
            
            objWB.Close True
            
        End If
        
        strFile = Dir
    Loop
    
    ErrExit:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & vbLf & _
        Err.Description, vbExclamation, "Fehler"
    GMS True
    Set objWB = Nothing
    Set objWS = Nothing
    Set objWSNew = Nothing
End Sub

Private Sub GMS(Optional ByVal Modus As Boolean = False)
    Static lngCalc As Long
    
    With Application
        .ScreenUpdating = Modus
        .EnableEvents = Modus
        .DisplayAlerts = Modus
        .EnableCancelKey = IIf(Modus, 1, 0)
        If Not Modus Then lngCalc = .Calculation
        .Calculation = IIf(Modus, lngCalc, -4135)
        .Cursor = IIf(Modus, -4143, 2)
    End With
    
End Sub

Gruß Sepp

Anzeige
kleine Korrektur!
03.02.2009 21:04:01
Josef
es muss

strPath = "C:\dcf\"


lauten

Gruß Sepp

AW: kleine Korrektur!
04.02.2009 23:22:17
Peter
Prima vielen Dank.
Leider zeigt mir Excel nun eine Fehlermeldung an:
Fehler 1004
'Datei_1.xls' wurde nicht gefunden. Überprüfen Sie die Rechtschreibung des Dateinamens...
Habe nochmals den Pfad gecheckt, in dem die Dateien liegen: hier ist definiv kein Fehler.
So wie es scheint, bricht das Programm in folgender Zeile ab:
For Each objWS In objWB.Worksheets
Vielleicht könnt Ihr mir helfen...
Vielen Dank und liebe Grüße
Anzeige
AW: grössere Korrektur!
04.02.2009 23:30:42
Josef
Hallo Peter,
da war noch ein "Patzer" drin, jetzt sollte es laufen.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub replaceSheet()
    Dim objWSNew As Worksheet, objWS As Worksheet
    Dim objWB As Workbook
    Dim strPath As String, strFile As String
    Dim intIndex As Integer
    
    On Error GoTo ErrExit
    GMS
    
    Set objWSNew = ThisWorkbook.Sheets("Data")
    
    strPath = "C:\dcf"
    
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    
    strFile = Dir(strPath & "*.xls")
    
    Do While strFile <> ""
        If strFile <> ThisWorkbook.FullName Then
            Set objWB = Workbooks.Open(strPath & strFile)
            
            For Each objWS In objWB.Worksheets
                If objWS.Name = "Data" Then
                    intIndex = objWS.Index
                    objWS.Delete
                    objWSNew.Copy before:=objWB.Sheets(intIndex)
                End If
            Next
            
            objWB.Close True
            
        End If
        
        strFile = Dir
    Loop
    
    ErrExit:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & vbLf & _
        Err.Description, vbExclamation, "Fehler"
    GMS True
    Set objWB = Nothing
    Set objWS = Nothing
    Set objWSNew = Nothing
End Sub

Private Sub GMS(Optional ByVal Modus As Boolean = False)
    Static lngCalc As Long
    
    With Application
        .ScreenUpdating = Modus
        .EnableEvents = Modus
        .DisplayAlerts = Modus
        .EnableCancelKey = IIf(Modus, 1, 0)
        If Not Modus Then lngCalc = .Calculation
        .Calculation = IIf(Modus, lngCalc, -4135)
        .Cursor = IIf(Modus, -4143, 2)
    End With
    
End Sub

Gruß Sepp

Anzeige
AW: grössere Korrektur!
04.02.2009 23:52:00
Peter
Super, 1000Dank.
LG
P

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige