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

Forumthread: Arbeitsmappe im Hintergrund öffnen und scchließen

Arbeitsmappe im Hintergrund öffnen und scchließen
Stefan
Hallo,
gibt es eine Möglichkeit per VBA eine Arbeitsmappe (Zieldatei), in die aus anderen Arbeitsmappen (Quelldateien) Daten hineinkopiert werden im Hintergrund vor dem Kopieren automatisch zu öffnen und nach dem Kopieren wieder automatisch zu schließen, sodaß der/die Anwender/in nichts mehr mit öffnen und schließen der Zielarbeitsmappe zu tun hat? Zum Kopieren habe ich bisher folgenden Code verwendet, der mir freundlicherweise hier zur Verfügung gestellt wurde:
Sub aamyCopy2()
Dim lngLastRow As Long
With Workbooks("Mappe1").Sheets(1)
lngLastRow = .UsedRange.Row + .UsedRange.Rows.Count - 1
'  lngLastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
Selection.Copy Destination:=.Cells(lngLastRow, 1).Offset(1, 0)
End With
End Sub
Viele Grüße
Stefan
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Arbeitsmappe im Hintergrund öffnen und scchließen
05.05.2010 08:52:22
Armin
Hallo Stefan,
natürlich geht das, aber da ja über selection der zu kopierende Bereich ausgewählt werden soll, ist das händling nicht einfacher.
Ferner muss noch sicher gestellt werden, dass das Sheet sich für alle auf dem gleichen Netzlaufwerk befindet. Wenn das gegeben ist, passiert aber auch nichts anderes als jetzt auch schon nur das das Sheet über den aufruf geöffnet wird. Man muss zum Sheet wechseln und selectieren und dann einen weiteres Makro starten. Denn Du brauchst ja eine Zeit zu slectieren!
Besser wäre es wenn Du wüstest welchen Bereich bzw. welche Werte kopiert werden sollen!
Dann ist der Ansatz einfacher.
Gruß Armin
Anzeige
AW: Arbeitsmappe im Hintergrund öffnen und scchließen
05.05.2010 11:30:51
Stefan
Hallo,
vielen Dank für deine Antwort. Ich bin was VBA angeht leider ein Laie. Alle Dateien, sowohl die Quelldateien wie auch die Zieldatei befinden sich auf dem selben Netzlaufwerk. Das ist sichergestellt. Die Quelldateien sind geöffnet. Das ist okay. Die Zieldatei soll über einen Aufruf geöffnet werden, dann die vom Anwender in der Quelldatei selectierten (markierten) Daten per Klick auf einen Button in die Zieldatei kopiert werden (an die vorhandenen Daten angehängt) und die Zieldatei jetzt wieder geschlossen werden. Hintergrund ist folgender:
In verschiedene Dateien (Quelldateien) werden ständig Daten eingetragen, diese sollen in einer Gesamtdatei zusammengeführt werden. Die Dateien haben alle die gleiche Struktur. Diese Gesamtdatei soll aber von dem Anwender nicht mehr quasi manuell angefaßt werden.
Ist das möglich?
Bisher wurde mir freundlicherweise folgender Code zur Verfügung gestellt, der aber nicht so richtig funktioniert. Es kommt die Meldung : Laufzeitfehler.
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")
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

Vielen Dank
Stefan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

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

  1. 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.

  2. 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
  3. 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.

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