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

Forumthread: Datei öffnen über VBA ohne Makros zu aktivieren

Datei öffnen über VBA ohne Makros zu aktivieren
17.01.2008 14:26:00
Torsten
Hallo beisammen,
für unseren Mitarbeitershop habe ich einen Bestellschein erarbeitet, in dem die MA ihre Bestellungen eingeben und die Datei direkt per Mail an die entsprechende Abteilung senden können. Logischerweise enthält diese VBA-Code, unter anderem auch ein paar Zeilen zum Schließen (before close).
Über eine 2. Datei möchte ich ein WS in dem Bestellschein ebenfalls über einen Code aktualisieren (Preisliste). Dies funktioniert, bis es zum Schließen des Bestellscheins kommt, da hakt's mit dem Code "before close". Bevor ich mir hier den Kopf zerbreche wie ich das behebe, würde es mir schon helfen wenn ich den Code:
Workbooks.Open Filename:= _
"Y:\Human Resources\Post\Mitarbeitershop\Bestellschein.xls", UpdateLinks:=3
soweit anpassen könnte, daß diese Datei o h n e Makros zu aktivieren geöffnet wird. Könnt Ihr mir dabei behilflich sein?
Besten Dank im voraus.
Gruß
Torsten

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
17.01.2008 14:49:22
Matthias
Hallo Thorsten,
wenn nur die Events deaktiviert werden sollen (das müsste ja reichen für deine Zwecke):

Application.EnableEvents = False
On Error Resume Next
Workbooks.Open Filename:= _
"Y:\Human Resources\Post\Mitarbeitershop\Bestellschein.xls", UpdateLinks:=3
If Err.Number>0 Then MsgBox Err.Description
On Error GoTo 0
Application.EnableEvents = True


Das On Error vermeidet, dass bei einem Fehler beim Öffnen die Events ausgeschaltet bleiben.
Gruß Matthias

Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
17.01.2008 16:44:16
Torsten
Hallo Matthias,
vielen Dank für Deine Rückmeldung - leider bleibt der Code immer noch an der gleichen Stelle hängen.
Die Aktualisierung der Datei "Bestellschein" funktioniert, nur wenn die Datei wieder geschlossen wird, bleibt Excel mit der Meldung "Zelle / Diagramm ist schreibgeschützt" bei ".Range("D4").Value = "ja" hängen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Code in Datei "Bestellschein.xls"
Application.ScreenUpdating = False
Dim ws As Worksheet
With Worksheets("FORM")
.Unprotect Password:="Kennwort"
........
.Range("D11").Value = "ja"
.......
.Protect Password:="Kennwort"
End With
obwohl ich den Passwortschutz vorher aufhebe. Woran kann das liegen?
Gruß
Torsten

Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
17.01.2008 17:18:00
Matthias
Hi Torsten,
an dem von dir geposteten Code kann es nicht liegen. Habe eine neue Mappe mit diesem Code versehen (in DieseArbeitsmappe):

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Dim ws As Worksheet
With Worksheets("FORM")
.Unprotect Password:="Kennwort"
.Range("D11").Value = "ja"
.Protect Password:="Kennwort"
End With
End Sub


...und ein Blatt "FORM" genannt und dieses mit dem Kennwort "Kennwort" geschützt.
Da kommt kein Fehler.
Gruß Matthias

Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
17.01.2008 17:43:21
Torsten
Hallo Matthias,
das funktioniert bei mir auch, solange ich diese Bestelldatei.xls direkt öffne und wieder schließe.
Aber in meinem Fall wird die Bestelldatei über den VBA-Code einer anderen Datei geöffnet und wenn's zum Schließen kommt, bricht der Code an der o.g. Stelle ab.
Vielleicht habe ich das eben nicht gut genug beschrieben.
Hast Du eine Idee?
Gruß
Torsten

Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
17.01.2008 19:17:20
Matthias
Hallo Torsten,
dann schreib mal

With Me.Worksheets("FORM")


weil Worksheets() referenziert immer die aktive Mappe, Me.Worksheets() in DieseArbeitsmappe bzw ThisWorkbook.Worksheets() bezieht sich auf die Mappe, die den Code beinhaltet.
Gruß Matthias

Anzeige
AW: Datei öffnen über VBA ohne Makros zu aktiviere
18.01.2008 09:04:37
Torsten
Guten Morgen Matthias,
das war's leider auch nicht.
Kann man das Öffnen dieser Datei über einen VBA-Code nicht so steuern, daß die darin enthaltenen Markros nicht aktiviert werden? Das erscheint mir einfaacher, als hier weiter dran rumzudoktern.
Gruß
Torsten

AW: Datei öffnen über VBA ohne Makros zu aktiviere
21.01.2008 02:00:00
Daniel
Hi
wenn das Problem in den Automatischen Makros liegt, die beim Starten oder Schließen automatisch laufen, dann könntest du das folgendermassen lösen:
zum Öffnen

Application.EnableEvents = False
Workbooks.Open "DeineDatei.xls"
Application.EnableEvents = true


und beim Schließen:


Application.EnableEvents = False
Workbooks("DeineDatei.xls").Close
Application.EnableEvents = true


die Makros sind dann zwar nicht generell deaktivert, aber zumindes die Event-Gesteuerten wie WORKBOOK_OPEN, WORKBOOK_BEFORECLOSE, WORKSHEET_CHANGE werden nicht mehr gestartet, solange Application.EnableEvents=FALSE gesetzt ist.
Dieser Schalter gilt allerdings Global für die Excel-Anwendung, dh. für alle Excel-Dateien, die gerade geöffnet sind.
Bricht das Makro mit Fehler ab, so bleibt die zuletzt gemachte Einstellung erhalten. und du musst es im Bedarfsfall über die Eingabe im Direktfenster wieder auf den richigen Wert setzten.
Gruß, Daniel

Anzeige
AW: erledigt - mT
21.01.2008 10:34:00
Torsten
Hallo Daniel,
vielen Dank für Deine Rückmeldung. Hat funktioniert. Das war daher eigentlich schon durch Matthias G. richtig beantwortet worden, nur durch Deine Meldung ist mir bewußt geworden, daß ich das "Application.EnableEvents = true" in meinem Code zu früh gesetzt hatte.
Nochmals Dank an alle.
Gruß
Torsten
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datei öffnen über VBA ohne Makros zu aktivieren


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei ohne Makros zu öffnen, kannst Du den folgenden VBA-Code verwenden. Dieser Code deaktiviert die Events temporär, sodass beim Öffnen der Datei keine Makros automatisch ausgeführt werden.

Application.EnableEvents = False
On Error Resume Next
Workbooks.Open Filename:="Y:\Human Resources\Post\Mitarbeitershop\Bestellschein.xls", UpdateLinks:=3
If Err.Number > 0 Then MsgBox Err.Description
On Error GoTo 0
Application.EnableEvents = True

Dieser Code sorgt dafür, dass die Datei geöffnet wird, ohne dass die darin enthaltenen Makros aktiviert werden. Dies ist besonders nützlich, wenn Du Excel ohne Makros starten möchtest.


Häufige Fehler und Lösungen

  • Fehler: "Zelle / Diagramm ist schreibgeschützt"

    • Dieser Fehler kann auftreten, wenn Du versuchst, auf eine geschützte Zelle zuzugreifen. Stelle sicher, dass Du die Zelle vorher mit .Unprotect entsperrst.
  • Fehler: Excel bleibt beim Schließen hängen

    • Wenn die Datei über VBA geöffnet wurde, kann es sein, dass der vorgegebene Code im Workbook_BeforeClose-Ereignis nicht richtig funktioniert. Achte darauf, dass Du die richtige Arbeitsmappe referenzierst (z.B. Me.Worksheets("FORM")).

Alternative Methoden

Wenn Du Excel automatisieren möchtest, ohne Makros auszuführen, kannst Du auch die Methode Application.DisplayAlerts verwenden:

Application.DisplayAlerts = False
Workbooks.Open Filename:="Y:\Human Resources\Post\Mitarbeitershop\Bestellschein.xls"
Application.DisplayAlerts = True

Diese Methode verhindert, dass Excel Dich mit Warnmeldungen stört, gleichzeitig werden jedoch die Makros nicht deaktiviert.


Praktische Beispiele

Hier ist ein Beispiel, wie Du eine Datei öffnest und gleichzeitig sicherstellst, dass die Makros nicht ausgeführt werden:

Sub OpenWithoutMacros()
    Dim wb As Workbook
    Application.EnableEvents = False
    Set wb = Workbooks.Open(Filename:="Y:\Human Resources\Post\Mitarbeitershop\Bestellschein.xls", UpdateLinks:=3)
    ' Führe hier Deine gewünschten Aktionen aus
    Application.EnableEvents = True
End Sub

Achte darauf, den Code in der richtigen Excel-Version (z.B. Excel 2016 oder höher) auszuführen, um Kompatibilitätsprobleme zu vermeiden.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung Deines Codes zu deaktivieren. Dies kann die Leistung verbessern und das Flickern des Bildschirms vermeiden.

  • Achte darauf, dass Du den Status der Events nach Deinem Code immer wieder aktivierst. Andernfalls kannst Du Probleme mit anderen Excel-Dokumenten bekommen, die Du geöffnet hast.

  • Teste Deinen Code regelmäßig, um sicherzustellen, dass er in verschiedenen Szenarien funktioniert, insbesondere wenn Du mit mehreren Dateien arbeitest.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Datei automatisch öffnen, ohne Makros auszuführen?
Du kannst Application.EnableEvents = False verwenden, um die Events zu deaktivieren, während die Datei geöffnet wird.

2. Warum bleibt Excel beim Schließen der Datei hängen?
Das kann passieren, wenn das Workbook_BeforeClose-Ereignis nicht korrekt referenziert wird. Stelle sicher, dass Du die richtige Arbeitsmappe verwendest.

3. Gibt es eine Möglichkeit, Excel ohne Makros zu starten?
Ja, Du kannst Excel starten, ohne Makros auszuführen, indem Du die entsprechenden Einstellungen in den Excel-Optionen anpasst oder den oben genannten Code verwendest.

4. Was ist die Funktion von On Error Resume Next?
Diese Zeile sorgt dafür, dass das Makro nicht abbricht, wenn ein Fehler auftritt. Stattdessen wird der Fehler ignoriert und der Code läuft weiter.

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