Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro nur nur in dieser Mappe ausführen

Makro nur nur in dieser Mappe ausführen
21.03.2013 15:13:48
Andreas
Hallo Excel Gemeinde,
Ich habe folgendes Problem:
Ich habe mehrere Arbeitsmappen. In 10 Mappen werden Daten eingegeben, die in der 11. gesammelt werden. Die 10 haben die Endung *.xlsb und die 1 xlsm.
In den 10 Mappen habe ich folgende Makros (Diese Arbeitsmappe), die über einen Button gestartet werden:
Sub SortierenUndSpeichern()
Call SortiereSpalteAufsteigend
Call MappeSpeichern
End Sub
Sub SortiereSpalteAufsteigend()
Dim Sortierspalte As String
Dim Bereich As String
ActiveSheet.Unprotect Password:=""
Bereich = "A8:AG32"
Sortierspalte = "A"
ActiveSheet.Range(Bereich).Sort _
Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
ActiveSheet.Protect Password:=""
End Sub

Sub MappeSpeichern()
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub
Jetzt habe ich das Problem, dass jedesmal wenn ich eine der 10 Mappen und die eine Sammelmappe geöffnet habe, und die Makros per Button starte, der Fokus auf die Sammelmappe springt und dort die Mappe auch geschlossen werden soll - es erscheint die Abfrage ob gespeichert werden soll, also es wird versucht auch diese Mappe zu schließen.
Wie bekomme ich es hin, dass alle meine Makros nur in der jeweiligen Mappe wirksam sind?
Danke für die Hilfe!
mfg, Andreas

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro nur nur in dieser Mappe ausführen
21.03.2013 15:28:26
Matze
Hallo Andreas,
allgemein gehören solche Sub's in ein Modul und nicht unter diese Arbeitsmappe.
Dein Makro
Sub SortierenUndSpeichern()
Call SortiereSpalteAufsteigend
Call MappeSpeichern
End Sub
nimm das call Mappespeichern da raus.
dann kannst du die beiden Mappen die es betrifft mit der Hand speichern,
so wird das nix da du anscheinend mit activewoorkbook die Datei11 ansprichst,
da diese gerade aktiv ist.
Man sollte das speichern dann wenn der richtigen Mappe zuweisen
Matze

Anzeige
AW: Makro nur nur in dieser Mappe ausführen
21.03.2013 15:38:12
Andreas
Hallo Matze,
Danke für die schnelle Antwort.
Das mit der Hand speichern ist keine Option. Wie kann ich das speichern der richtigen Mappe zuweisen, ohne deren Name eingeben zu müssen. Das werden später noch viel mehr Mappen.
Habe von VBA leider keine Ahnung.
mfg, Andreas

Anzeige
Bitte hier ein Profi drüberschauen! danke !
21.03.2013 15:52:35
Matze
Hallo Andreas,
---mir war das klar das speichern von Hand keine Option sein würde.
Ich bin nicht der Profi für deine Aufgabe u. gebe deshalb weiter ab,
lasse auf "offen" stehen für weitere Bearbeitungen
Matze

AW: Bitte hier ein Profi drüberschauen! danke !
21.03.2013 16:26:27
Andreas
Hallo,
ich glaube ich hab den Fehler schon zum Teil selbst gefunden.
Application.Quit
schließt ja das Programm, oder?
Habe es mit:
ThisWorkbook.Close
versucht, da wird eine Fehler (Dokument wiederherstellen und Anwendung Excel neu starten) angezeigt.
mfg, Andreas

Anzeige
AW: Bitte hier ein Profi drüberschauen! danke !
21.03.2013 20:55:50
Tino
Hallo,
ich würde es mal so versuchen.
Sub MappeSpeichern()
ThisWorkbook.Saved = True
If Application.Workbooks.Count = 1 Then
ThisWorkbook.Save
Application.Quit
Else
ThisWorkbook.Close (Not ThisWorkbook.ReadOnly)
End If
End Sub

Gruß Tino

Anzeige
AW: Bitte hier ein Profi drüberschauen! danke !
22.03.2013 07:37:58
Andreas
Hallo Tino,
Danke für die Hilfe, scheint zu funktionieren. Werde es heute ausgiebig auf verschiedenen Rechnern testen und Rückmeldung geben.
Nen schönen Tag!
mfg, Andreas

AW: Bitte hier ein Profi drüberschauen! danke !
27.03.2013 07:50:52
Andreas
Hallo Tino,
hier noch mal eine Rückmeldung. Leider Funktioniert dies auch nicht, bzw. mal gehts, mal nicht. In einigen Fällen versucht Excel trotzdem beide Mappe zu schließen, bzw. es kommt eine Fehlermeldung das die Mappe nicht wiederhergestellt werden kann. habe die Schließung der Mappe über Button aufgegeben.
Schöne Ostern!
mfg, Andreas
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makros nur in einer bestimmten Arbeitsmappe ausführen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Deine Makros nur in der jeweiligen Arbeitsmappe ausgeführt werden, kannst Du die folgenden Schritte befolgen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf Deine Arbeitsmappe im Projektfenster und wähle Einfügen > Modul.

  3. Makros anpassen: Kopiere die untenstehenden Makros in das Modul. Achte darauf, dass Du Application.Quit durch ThisWorkbook.Close ersetzt, um die aktive Arbeitsmappe zu schließen, ohne Excel zu beenden.

    Sub SortierenUndSpeichern()
       Call SortiereSpalteAufsteigend
       Call MappeSpeichern
    End Sub
    
    Sub SortiereSpalteAufsteigend()
       Dim Sortierspalte As String
       Dim Bereich As String
       ActiveSheet.Unprotect Password:=""
       Bereich = "A8:AG32"
       Sortierspalte = "A"
       ActiveSheet.Range(Bereich).Sort _
           Key1:=Range(Sortierspalte & "1"), Order1:=xlAscending, _
           Header:=xlGuess, MatchCase:=False, _
           Orientation:=xlTopToBottom
       ActiveSheet.Protect Password:=""
    End Sub
    
    Sub MappeSpeichern()
       ThisWorkbook.Saved = True
       If Application.Workbooks.Count = 1 Then
           ThisWorkbook.Save
           Application.Quit
       Else
           ThisWorkbook.Close (Not ThisWorkbook.ReadOnly)
       End If
    End Sub
  4. Makros ausführen: Führe die Makros über einen Button oder direkt im VBA-Editor aus.


Häufige Fehler und Lösungen

  • Fehler: Excel schließt die Sammelmappe
    Lösung: Stelle sicher, dass Du in den Makros ThisWorkbook verwendest, um auf die aktuelle Arbeitsmappe zuzugreifen.

  • Fehler: "Dokument wiederherstellen" erscheint
    Lösung: Vermeide, dass Du die Arbeitsmappe schließt, wenn noch andere Arbeitsmappen geöffnet sind. Verwende die Bedingung If Application.Workbooks.Count = 1 Then.


Alternative Methoden

Ein alternativer Ansatz ist die Verwendung von Workbook-Events. Du kannst das Makro so anpassen, dass es nur bei bestimmten Aktionen in der Arbeitsmappe ausgeführt wird. Zum Beispiel kannst Du das Workbook_BeforeClose-Ereignis nutzen, um sicherzustellen, dass die Arbeitsmappe nur unter bestimmten Bedingungen geschlossen wird.


Praktische Beispiele

Hier ist ein Beispiel, wie Du das Makro anpassen kannst, um eine spezifische Arbeitsmappe zu speichern, ohne die Sammelmappe zu beeinflussen:

Sub SpeichernUndSchließen()
   Dim wb As Workbook
   Set wb = ThisWorkbook
   wb.Save
   wb.Close
End Sub

Dieses Makro speichert und schließt nur die aktuelle Arbeitsmappe, ohne andere geöffnete Arbeitsmappen zu schließen.


Tipps für Profis

  • Verwendung von Application.DisplayAlerts = False: Dies kann nützlich sein, um Benachrichtigungen zu unterdrücken, wenn Du Arbeitsmappen speicherst oder schließt.

  • Fehlerbehandlung einfügen: Nutze On Error Resume Next, um Fehler im Makro zu ignorieren, und On Error GoTo 0, um die Standardfehlerbehandlung wiederherzustellen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Makros in Excel 2016 funktionieren?
Stelle sicher, dass Du die Makros als .xlsm speicherst, um die Makros in Excel 2016 nutzen zu können.

2. Was kann ich tun, wenn Excel immer noch die Sammelmappe schließt?
Überprüfe, ob Du ThisWorkbook korrekt verwendest und teste die Makros in einer Umgebung mit minimalen offenen Arbeitsmappen.

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