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

Mappe mit Makro öffnen - falls nicht schon offen

Forumthread: Mappe mit Makro öffnen - falls nicht schon offen

Mappe mit Makro öffnen - falls nicht schon offen
26.04.2005 14:06:07
Martin
Hallo miteinander
Ich bin nicht geübt in VBA und habe das gewünschte Makro nicht im Archiv gefunden...
Ich habe einen Befehl in der Datei "A", der mir eine bestimmte Datei "C" automatisch mit einem Makro öffnet. So weit so gut. Nun öffne ich aber eine dritte Datei "B", die auch versucht, die gleiche Datei "C" nochmals zu öffnen. Dies soll aber verhindert werden (ich habe viele Verknüpfungen auf die automatisch zu öffnende Datei, die auf verschiedene Dateien verweisen...). Die Datei A oder B, die das Makro erhält, soll am Ende wieder aktiviert sein.
Hier die Anweisungen, die problemlos funktionieren:
in DieseArbeitsmappe:

Private Sub Workbook_Open()
Call Datei_C_automatisch_öffnen
End Sub

in Modul1:
Sub Datei_C_automatisch_öffnen()
Workbooks.Open "(Pfad der Datei)\C.xls"
Windows("A").Activate
End Sub
Ist wahrscheinlich nicht optimal (halt handgestrickt...). Gibt es eine Möglichkeit zu prüfen, ob die Datei "C" schon geöffnet ist und falls dies so ist, diese Datei halt nicht öffnet?
Vielen Dank jetzt schon für Eure Hilfe!
Martin
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mappe mit Makro öffnen - falls nicht schon offen
26.04.2005 14:29:33
Hajo_Zi
Hallo Martin,
mal ein Teil aus meinem Code, der angepast werden muß.

BoOffen = False
For Each x In Workbooks
If x.Name = "Auftragsplanung Übersicht.XLS" Then
Workbooks("Auftragsplanung Übersicht.XLS").Save
BoOffen = True
Exit For
End If
Next
If BoOffen = False Then Workbooks.Open Filename:=StNetz & "Auftragsplanung Übersicht.XLS", Password:=StDatei

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.



"Wer Rechtschreibfehler findet, darf sie behalten!" Dies gilt auch für Bert.
Anzeige
AW: Mappe mit Makro öffnen - falls nicht schon offen
26.04.2005 15:27:28
Martin
Hallo miteinander
Besten Dank für die Beiträge. Bei mir funktionierts leider nicht, wenn die Datei "C" schon geöffnet ist (Makro stürzt ab). Muss ich den Pfad relativ eingeben (..\"Dateiname")? Oder was mach ich falsch?
Noch eine zusätzliche Frage: Gäbe es auch noch eine Möglichkeit, beim Schliessen der ersten Datei die Datei "C" mit Speichern zu schliessen? Deren Bezüge würden nämlich aktualisiert.
Besten Dank und Gruss
Martin
Anzeige
AW: Mappe mit Makro öffnen - falls nicht schon offen
27.04.2005 09:27:18
Martin
Hallo Hajo_Zi
Habs doch noch hingekriegt - hab das hier "Filename:=StNetz &" sowie ", Password:=StDatei" gelöscht und nur den Dateinamen reingeschrieben. Ehrlich gesagt weiss ich nicht, was ich da rausgelöscht habe...
Trotzdem vielen Dank, hat mir sehr geholfen.
Gruss
Martin
Anzeige
AW: Mappe mit Makro öffnen - falls nicht schon offen
27.04.2005 09:29:11
Hajo_Zi
Hallo Martin,
StNetz = Phad
Password:=StDatei = Password der Datei
beides auf Variablen.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.

"Wer Rechtschreibfehler findet, darf sie behalten!" Dies gilt auch für Bert.

Anzeige
AW: Mappe mit Makro öffnen - falls nicht schon offen
26.04.2005 14:29:46
u_
Hallo,

Sub Datei_C_automatisch_öffnen()
dim strDatei as string, wb as WorkBook
for each wb in Workbooks
if wb.Name="c.xls" then
strdatei=wb.name
exit for
end if
next wb
if strDatei="" then Workbooks.Open "(Pfad der Datei)\C.xls"
Windows("A").Activate
End Sub

Gruß
Anzeige
;
Anzeige

Infobox / Tutorial

Makro für das Öffnen einer Arbeitsmappe erstellen


Schritt-für-Schritt-Anleitung

Um ein Makro zu erstellen, das eine Arbeitsmappe öffnet, sofern sie nicht bereits geöffnet ist, kannst Du folgenden VBA-Code nutzen. Dieser Code verhindert, dass die Arbeitsmappe "C.xls" mehrfach geöffnet wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge den folgenden Code in das Modul "DieseArbeitsmappe" ein:

    Private Sub Workbook_Open()
        Call Datei_C_automatisch_öffnen
    End Sub
  3. Füge nun den folgenden Code in ein neues Modul (zum Beispiel "Modul1") ein:

    Sub Datei_C_automatisch_öffnen()
        Dim strDatei As String
        Dim wb As Workbook
    
        For Each wb In Workbooks
            If wb.Name = "C.xls" Then
                strDatei = wb.Name
                Exit For
            End If
        Next wb
    
        If strDatei = "" Then
            Workbooks.Open "(Pfad der Datei)\C.xls"
        End If
    
        Windows("A").Activate
    End Sub
  4. Passe den (Pfad der Datei) an den tatsächlichen Speicherort Deiner Datei an.


Häufige Fehler und Lösungen

  • Fehler: Makro stürzt ab, wenn die Datei "C" bereits geöffnet ist.

    • Lösung: Stelle sicher, dass der Code die offene Arbeitsmappe korrekt erkennt, bevor sie erneut geöffnet wird. Der oben angegebene Code sollte dies berücksichtigen.
  • Fehler: Pfad nicht korrekt.

    • Lösung: Überprüfe, ob der Pfad zur Datei "C.xls" korrekt eingegeben ist. Verwende gegebenenfalls einen relativen Pfad.

Alternative Methoden

Eine alternative Methode wäre die Verwendung der Workbook_Open-Ereignisprozedur in einer separaten Funktion, um mehr Flexibilität zu haben. Du könntest auch mit Application.Workbooks arbeiten, um die Liste der Arbeitsmappen zu durchsuchen.


Praktische Beispiele

Hier ist ein Beispiel, wie Du das Makro erweitern kannst, um die Arbeitsmappe "C.xls" beim Schließen der ersten Datei auch zu speichern:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Workbooks("C.xls").Close SaveChanges:=True
End Sub

Diese Ergänzung sorgt dafür, dass die Arbeitsmappe "C.xls" beim Schließen der ersten Datei gespeichert wird.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Nutze Fehlerbehandlungsroutinen (On Error GoTo) für eine robustere Fehlerbearbeitung.
  • Kommentiere Deinen Code, um die Wartung und das Verständnis zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Datei "C.xls" nur einmal geöffnet wird?
Der bereitgestellte Code überprüft zuerst, ob "C.xls" bereits geöffnet ist. Falls ja, wird die Datei nicht erneut geöffnet.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der Code wurde in Excel 2003 SP1 getestet. Neuere Versionen unterstützen ebenfalls VBA, jedoch können einige Befehle je nach Version unterschiedlich behandelt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige