Arbeitsmappe im Hintergrund öffnen und schließen
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei im Hintergrund zu öffnen und zu schließen, kannst du den folgenden VBA-Code verwenden. Dieser Code öffnet eine Zieldatei, kopiert die ausgewählten Daten aus der Quelldatei und schließt die Zieldatei danach automatisch. So bleibt die Zieldatei für den Anwender unsichtbar.
Sub myCopy3()
Dim objXLApp As Excel.Application
Dim objXLABC As Excel.Workbook
Dim objXLWorkbooks As Excel.Workbooks
Dim neuWkb
Dim lngLastRow As Long
Dim mySelection()
Dim myCounter()
Dim i As Long
mySelection = Selection
ReDim myCounter(1 To UBound(mySelection))
For i = LBound(mySelection()) To UBound(mySelection())
myCounter(i) = mySelection(i, 1)
Next
Set objXLApp = New Excel.Application
Set objXLWorkbooks = objXLApp.Workbooks
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set objXLABC = objXLWorkbooks.Open("C:\Stefan\Mappe2.xls") ' Pfad zur Zieldatei
neuWkb = objXLABC.Name
With objXLWorkbooks(neuWkb).Sheets(1)
lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = LBound(mySelection()) To UBound(mySelection())
.Cells(lngLastRow + i, 1).Offset(1, 0) = myCounter(i)
Next
End With
objXLWorkbooks(neuWkb).Close SaveChanges:=True
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
Set objXLApp = Nothing
Set objXLWorkbooks = Nothing
End Sub
Häufige Fehler und Lösungen
-
Laufzeitfehler beim Ausführen des Codes
Möglicherweise ist der Pfad zur Zieldatei nicht korrekt. Stelle sicher, dass die Datei unter dem angegebenen Pfad existiert.
-
Excel-Datei im Hintergrund geöffnet, aber nicht sichtbar
Um die Sichtbarkeit der Excel-Anwendung zu steuern, kannst du die Eigenschaft Visible
der objXLApp
setzen:
objXLApp.Visible = False
-
Excel schließt nicht nach dem Kopieren
Überprüfe, ob der Code die Close
-Methode korrekt verwendet. Achte darauf, dass SaveChanges
auf True
gesetzt ist.
Alternative Methoden
Du kannst auch die Workbook_Open
- und Workbook_BeforeClose
-Ereignisse in VBA verwenden, um eine Excel-Datei im Hintergrund zu öffnen und zu schließen. Diese Methode erfordert jedoch ein gewisses Maß an Kenntnissen in der VBA-Programmierung.
Praktische Beispiele
Wenn du beispielsweise Daten aus mehreren Excel-Dateien in eine Gesamtdatei zusammenführen möchtest, kannst du den oben genannten Code anpassen. Wenn die Quelldateien im gleichen Verzeichnis wie die Zieldatei liegen, kannst du den Pfad dynamisch generieren.
Set objXLABC = objXLWorkbooks.Open(ThisWorkbook.Path & "\Mappe2.xls")
Damit wird die Datei „Mappe2.xls“ im gleichen Ordner wie die aktive Arbeitsmappe geöffnet.
Tipps für Profis
- Verwende die
Application.DisplayAlerts = False
-Anweisung, um Excel zu zwingen, keine Speichern-Abfragen anzuzeigen, wenn du eine Arbeitsmappe schließt.
- Experimentiere mit der
Application.CutCopyMode
-Eigenschaft, um die Zwischenablage zu leeren, nachdem der Kopiervorgang abgeschlossen ist.
Application.CutCopyMode = False
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass die Zieldatei immer im Hintergrund bleibt?
Stelle die Eigenschaft Visible
der Excel-Anwendung auf False
, um die Datei im Hintergrund zu halten.
2. Kann ich mehrere Excel-Dateien gleichzeitig in separaten Fenstern öffnen?
Ja, du kannst mehrere Instanzen von Excel öffnen, indem du für jede Datei eine neue Instanz von Excel.Application
erstellst.
3. Gibt es eine Möglichkeit, einen bestimmten Bereich in eine andere Arbeitsmappe zu kopieren?
Ja, du kannst den spezifischen Bereich durch Angabe der entsprechenden Zellen im Code festlegen.
4. Wie kann ich eine Excel-Datei automatisch schließen, ohne dass eine Speichern-Abfrage erscheint?
Setze Application.DisplayAlerts = False
, bevor du die Datei schließt.