Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere Excel Dateien gleichzeitig bearbeiten.

mehrere Excel Dateien gleichzeitig bearbeiten.
04.11.2004 04:06:29
Chris
Hallo,
ich hab hier einen Satz von ueber 100 Dateien von Kalkulationen, die identisch sind (ausser im Punkt Gewicht), in denen alle an der gleichen Stelle ein Fehler ist und die alle an der gleichen Stelle geaendert werden muessen.
Der Fehler ist bei allen Dateien im Feld "G 23". Dort muesste richtigerweise
"=G22/C8" stehen.
Ich hab das Forum mal durchsucht und folgenden Ansatz gefunden:
#####################

Sub Multipagesetup()
'Multi_Open
Dim arrFilenames As Variant
Dim wkbArr As Workbook
Dim wkbBasis As Workbook
Set wkbBasis = ActiveWorkbook
Selection:
' Zu öffnende Dateien erfragen
arrFilenames = Application.GetOpenFilename( _
"Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, _
"Exceldateien auswählen...", MultiSelect:=True)                  ' Ausgewählte Dateien des Öffnen-Dialoges in Feld ablegen
If VarType(arrFilenames) = vbBoolean Then
If MsgBox("Sie haben keine Dateien ausgewählt. Möchten sie das Makro beenden?", vbYesNo, "Frage") = vbNo Then
GoTo Selection
Else
Set wbkBasis = Nothing
Exit 

Sub
End If
End If
Application.ScreenUpdating = False
'Die vom Makro vorgenommenen Tätigkeiten
'bleiben zur Geschwidigkeitssteigerung unsichtbar
For i = 1 To UBound(arrFilenames)   ' Durchläuft die Anzahl der Dateien
'Wenn Datei noch nicht geöffnet
If FileOpenYet(Dir$(arrFilenames(i))) = False Then
'dann öffnen
Workbooks.Open FileName:=arrFilenames(i)
Else
'oder aktivieren
Workbooks(Dir$(arrFilenames(i))).Activate
End If
Set wkbArr = ActiveWorkbook
'hier kommt dann der Code rein, der die ausgewählten Dateien
'betrifft. Die Ursprungsdatei ist über wbkBasis ansprechbar.
'wkbBasis.Worksheets(1).Cells(i, 1).Value = wkbArr.Worksheets(1).Range("F32").Value
'wkbBasis.Worksheets(1).Cells(i, 2) = wkbArr.Name
With wkbArr.Worksheets(1).PageSetup
'        .PrintTitleRows = ""
'        .PrintTitleColumns = ""
'        .PrintArea = ""
'        .LeftHeader = ""
'        .CenterHeader = ""
'        .RightHeader = ""
'        .LeftFooter = ""
.CenterFooter = "&F"
'        .RightFooter = ""
'        .LeftMargin = Application.InchesToPoints(0.787401575)
'        .RightMargin = Application.InchesToPoints(0.787401575)
'        .TopMargin = Application.InchesToPoints(0.984251969)
'        .BottomMargin = Application.InchesToPoints(0.984251969)
'        .HeaderMargin = Application.InchesToPoints(0.4921259845)
'        .FooterMargin = Application.InchesToPoints(0.4921259845)
'        .PrintHeadings = False
'        .PrintGridlines = False
'        .PrintComments = xlPrintNoComments
'        .PrintQuality = 600
'        .CenterHorizontally = False
'        .CenterVertically = False
'        .Orientation = xlPortrait
'        .Draft = False
'        .PaperSize = xlPaperA4
'        .FirstPageNumber = xlAutomatic
'        .Order = xlDownThenOver
'        .BlackAndWhite = False
'        .Zoom = 100
End With
wkbArr.Close savechanges:=True      'Datei schließen
Set wkbArr = Nothing
Next i
Set wkbArr = Nothing
'Ursprüngliche Datei wieder aktivieren
wkbBasis.Activate
Set wkbBasis = Nothing    'Die Variable zurücksetzen
'und den Monitor aktivieren
Application.ScreenUpdating = True
End 

Sub

Function FileOpenYet(FileName As String) As Boolean
'eine Funktion, die Prüft ob eine Datei schon geöffnet ist.
Dim s As String
On Error GoTo Nonexistent
s = Workbooks(FileName).Name
FileOpenYet = True
Exit 

Function
Nonexistent:
FileOpenYet = False
End 

Function
Ich hab nen relativ kurzfristigen Vorlagetermin.
Wenn mir jemand mit diesem Problem helfen wuerde, waere ich sehr dankbar!
Was muss ich oben abaendern, damit ich alle Dateien in wenig Zeit aendern kann, oder eventuell hat jemand fuer mich einen anderen Ansatz!
Danke und Gruss aus China!
Christian Scheidler

		
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: mehrere Excel Dateien gleichzeitig bearbeiten.
Harald
Hallo Christian,
wie wär's damit:
Option Explicit

Sub test()
Const folderspec = "c:\temp" 'Hier das Verzeichnis, in dem die 100 XLS Dateien liegen - aber keine anderen XLS als die zu Ändernden!
Dim fs, f, f1, fc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
For Each f1 In fc
If UCase(Right(f1, 3)) = "XLS" Then 'Excel File gefunden
Call ChangeCell(folderspec, f1.Name)
End If
Next
End Sub


Sub ChangeCell(folder As String, file As String)
Workbooks.Open Filename:=folder & "\" & file
Range("G23").Select
ActiveCell.Formula = "=G22/C8"
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

Gruß Harald
Anzeige
AW: mehrere Excel Dateien gleichzeitig bearbeiten.
Chris
vielen , vielen Dank!
Ich hab in meiner Not die Dinger zum Grossteil schon per Hand editiert, aber fuer den Rest hat es wunderbar geklappt!
Danke nochmal :-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Excel-Dateien gleichzeitig bearbeiten


Schritt-für-Schritt-Anleitung

Um mehrere Excel-Dateien gleichzeitig zu bearbeiten, kannst du das folgende VBA-Skript verwenden. Dieses Skript öffnet die ausgewählten Dateien, ändert den Wert in einer bestimmten Zelle und speichert die Dateien anschließend.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub Multipagesetup()
    Dim arrFilenames As Variant
    Dim wkbArr As Workbook
    Dim wkbBasis As Workbook
    Set wkbBasis = ActiveWorkbook

    ' Zu öffnende Dateien erfragen
    arrFilenames = Application.GetOpenFilename("Exceldateien (*.xls), *.xls, Alle Dateien (*.*), *.*", 1, "Exceldateien auswählen...", MultiSelect:=True)

    If VarType(arrFilenames) = vbBoolean Then
        If MsgBox("Sie haben keine Dateien ausgewählt. Möchten sie das Makro beenden?", vbYesNo, "Frage") = vbNo Then
            GoTo Selection
        Else
            Set wkbBasis = Nothing
            Exit
        End If
    End If

    Application.ScreenUpdating = False

    For i = 1 To UBound(arrFilenames)
        If FileOpenYet(Dir$(arrFilenames(i))) = False Then
            Workbooks.Open FileName:=arrFilenames(i)
        Else
            Workbooks(Dir$(arrFilenames(i))).Activate
        End If
        Set wkbArr = ActiveWorkbook

        ' Hier wird der Fehler in G23 behoben
        wkbArr.Worksheets(1).Range("G23").Formula = "=G22/C8"

        wkbArr.Close savechanges:=True
        Set wkbArr = Nothing
    Next i

    wkbBasis.Activate
    Set wkbBasis = Nothing
    Application.ScreenUpdating = True
End Sub

Function FileOpenYet(FileName As String) As Boolean
    On Error GoTo Nonexistent
    FileOpenYet = True
    Exit Function
Nonexistent:
    FileOpenYet = False
End Function
  1. Schließe den VBA-Editor und führe das Skript aus.

Häufige Fehler und Lösungen

  • Fehler 1: „Die Datei kann nicht gefunden werden.“

    • Stelle sicher, dass die Dateipfade korrekt sind und die Dateien nicht verschoben wurden.
  • Fehler 2: „Die Datei ist bereits geöffnet.“

    • Das Skript überprüft, ob die Datei schon geöffnet ist. Falls nicht, wird sie geöffnet.
  • Fehler 3: „Zugriff verweigert.“

    • Überprüfe die Berechtigungen der Dateien und stelle sicher, dass sie nicht schreibgeschützt sind.

Alternative Methoden

Neben der Verwendung von VBA gibt es auch andere Methoden, um mehrere Excel-Dateien gleichzeitig zu bearbeiten:

  • Power Query: Mit Power Query kannst du mehrere Excel-Dateien in einem Arbeitsblatt zusammenführen und Änderungen vornehmen, ohne jede Datei einzeln zu öffnen.
  • Excel Online: Nutze die Funktion zum gemeinsamen Bearbeiten in Excel Online, um an einer Datei mit mehreren Benutzern gleichzeitig zu arbeiten.

Praktische Beispiele

Hier sind einige praktische Anwendungen des oben genannten Skripts:

  • Preisänderungen: Wenn du in mehreren Excel-Dateien die Preise für Produkte anpassen musst, kannst du den Wert in einer bestimmten Zelle schnell ändern.
  • Fehlerbehebung: Bei identischen Fehlern in verschiedenen Dateien, wie z.B. in der Zelle G23, kannst du mit diesem Skript alle Dateien gleichzeitig bearbeiten.

Beispiel für das Öffnen von zwei Excel-Dateien nebeneinander:

Workbooks.Open "C:\Pfad\zur\Datei1.xls"
Workbooks.Open "C:\Pfad\zur\Datei2.xls"

Tipps für Profis

  • Aktiviere die Option „gleichzeitige Bearbeitung“ in den Excel-Optionen, um die Zusammenarbeit mit anderen Benutzern zu erleichtern.
  • Nutze das FileDialog-Objekt, um den Datei-Dialog benutzerfreundlicher zu gestalten.
  • Speichere regelmäßig, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich mehrere Excel-Dateien gleichzeitig öffnen und bearbeiten?
Ja, mit dem oben beschriebenen VBA-Skript kannst du mehrere Excel-Dateien gleichzeitig öffnen und bearbeiten.

2. Wie kann ich Fehler in mehreren Excel-Dateien beheben?
Du kannst das Skript verwenden, um denselben Fehler in vielen Dateien gleichzeitig zu korrigieren, indem du die spezifische Zelle anpasst.

3. Ist es möglich, Excel-Dateien von mehreren Benutzern gleichzeitig zu bearbeiten?
Ja, du kannst Excel-Dateien gemeinsam bearbeiten, indem du die Funktion „Gemeinsam bearbeiten“ in Excel aktivierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige