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

Forumthread: Datei nur öffnen, wenn Makros aktiviert sind?

Datei nur öffnen, wenn Makros aktiviert sind?
silex1
Hallo,
da ich ein VBA Vollpfosten bin, ich aber dies benötige, hät ich mal ne Frage.
In meiner erstellten Datei sind Makros enthalten. Diese werden benötigt, damit alles reibungslos funktioniert.
Kann meine Datei beim Aufruf prüfen ob die Makros aktiviert wurden?
Wenn ja starten, wenn nein Infobox ausgeben und bei ok drücken wortlos beenden! Wäre cool!
Hier noch der (zusammengeklaute) Code, in den dies ggf. eingebaut werden muss! Bitte nicht mich verhauen wg. SELECT oder anderen Fehlern, bin stolz aud diesen! :-))
  • 
    Sub Workbook_Open()
    For Each c In Application.CommandBars
    c.Enabled = False
    Next
    If Application.DisplayFormulaBar = True Then
    Application.DisplayFormulaBar = False
    End If
    Dim objBar As CommandBar
    Dim objPopUp As CommandBarPopup
    Dim objBtn As CommandBarButton
    Dim strBar As String
    strBar = "Navigation"
    On Error Resume Next
    Application.CommandBars(strBar).Delete
    On Error GoTo 0
    Set objBar = Application.CommandBars.Add( _
    Name:=strBar, _
    Position:=msoBarTop, _
    MenuBar:=False, _
    Temporary:=True)
    Set objBtn = objBar.Controls.Add
    With objBtn
    .Caption = "Start!"
    .OnAction = "Start"
    .TooltipText = "Bitte Button drücken, bevor neue Daten angelegt werden sollen!"
    'Style = msoButtonCaption
    .Style = msoButtonIconAndCaption
    .FaceId = 18
    .BeginGroup = True
    End With
    'hier folgen noch weiter Button´s
    With objBtn
    .Caption = "Hilfe"
    .OnAction = "Hilfe"
    .TooltipText = "Bedienungsanleitung"
    .Style = msoButtonIconAndCaption
    .FaceId = 49
    .BeginGroup = True
    End With
    objBar.Visible = True
    Msg = "Die überarbeitete Vorlage wird ohne Gewährleistung jeglicher Art, zur Verfügung  _
    gestellt." & vbCr & "In keinem Fall übernehme ich die Haftung für Schäden gleich welcher Art,   _
    _
    die durch die Verwendung dieser Vorlagen entstanden sein könnten." & vbCr & "" &
    vbCr & "Verwenden Sie diese Vorlage nicht, wenn Sie sich mit dem Haftungsauschluss nicht  _
    einverstanden erklären." & vbCr & "" & vbCr
    MsgBox Msg, vbExclamation Or vbOKOnly, "Willkommen!"
    Sheets("Berechnung").Select
    Range("B2").Select
    End Sub
    

  • Mit dankbaren grüßen, Rene
    Anzeige

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

    Betreff
    Benutzer
    Anzeige
    AW: Datei nur öffnen, wenn Makros aktiviert sind?
    09.07.2010 22:40:45
    Mustafa
    Hallo Rene,
    ohne aktive Makros würde jeglicher Code in deiner Mappe gar nicht erst gestartet werden, somit auch nicht der Code der prüfen soll ob Makros aktiviert sind.
    Soweit gehts also nicht.
    Eine Möglichkeit wäre ein Deckblatt zu erstellen, und alle andren Sheets auszublenden.
    Wenn makros aktiviert sind das Deckblatt ausblenden lassen und alle relevanten Sheets einblenden.
    Sonst bleibt das Deckblatt aktiv und die mappe kann nicht bearbeitet werden.
    Rückmeldung obs hilft wäre nett.
    Gruß aus der Domstadt Köln.
    Anzeige
    AW: Datei nur öffnen, wenn Makros aktiviert sind?
    09.07.2010 22:50:38
    silex1
    Hallo Mustafa,
    ja, dass mit den aktivierten Makros ist mir schon klar. Dachte nur, dass es doch auch gehen müsste!
    Wenn ich das mit dem Deckblatt machen würde, wie sehe dann der Code aus?
    mit dankbaren Grüßen, Rene
    AW: Datei nur öffnen, wenn Makros aktiviert sind?
    09.07.2010 22:56:04
    Mustafa
    Hallo Rene,
    hier ein Beispiel.
    Code ist im Modul Arbeitsmappe:
    https://www.herber.de/bbs/user/70531.xls
    Rückmeldung obs hilft wäre nett.
    Gruß aus der Domstadt Köln.
    Anzeige
    PS öffne einmal ohne aktive Makros und einmal mit
    09.07.2010 22:58:04
    Mustafa
    :-)
    wäre ne Alternative!
    09.07.2010 23:09:52
    silex1
    Hallo Mustafa,
    wenn ich es richtig verstanden hab, dann setzt ..close.. das Deckblatt als sichtbar. Wenn keine Makros aktiv, dann bleibt dieses Blatt ja e da und wenn Makros aktiv, dann läuft ...open... an?
    Wo und wie müsste ich dies allerdings in meinen Code einfügen?
    VG, Rene
    Anzeige
    AW: wäre ne Alternative!
    10.07.2010 00:33:46
    Mustafa
    Hallo Rene,
    Den Code fügst du am besten an den Anfang ein.
    also so:
    Sub Workbook_Open()
    Sheets(2).Visible = True
    Sheets(3).Visible = True
    Sheets(1).Visible = False
    For Each c In Application.CommandBars
    c.Enabled = False
    Next
    If Application.DisplayFormulaBar = True Then
    Application.DisplayFormulaBar = False
    End If
    Dim objBar As CommandBar
    Dim objPopUp As CommandBarPopup
    Dim objBtn As CommandBarButton
    Dim strBar As String
    strBar = "Navigation"
    On Error Resume Next
    Application.CommandBars(strBar).Delete
    On Error GoTo 0
    Set objBar = Application.CommandBars.Add( _
    Name:=strBar, _
    Position:=msoBarTop, _
    MenuBar:=False, _
    Temporary:=True)
    Set objBtn = objBar.Controls.Add
    With objBtn
    .Caption = "Start!"
    .OnAction = "Start"
    .TooltipText = "Bitte Button drücken, bevor neue Daten angelegt werden sollen!"
    'Style = msoButtonCaption
    .Style = msoButtonIconAndCaption
    .FaceId = 18
    .BeginGroup = True
    End With
    'hier folgen noch weiter Button´s
    With objBtn
    .Caption = "Hilfe"
    .OnAction = "Hilfe"
    .TooltipText = "Bedienungsanleitung"
    .Style = msoButtonIconAndCaption
    .FaceId = 49
    .BeginGroup = True
    End With
    objBar.Visible = True
    Msg = "Die überarbeitete Vorlage wird ohne Gewährleistung jeglicher Art, zur Verfügung _
    gestellt." & vbCr & "In keinem Fall übernehme ich die Haftung für Schäden gleich welcher Art, _
    _
    die durch die Verwendung dieser Vorlagen entstanden sein könnten." & vbCr & "" &
    vbCr & "Verwenden Sie diese Vorlage nicht, wenn Sie sich mit dem Haftungsauschluss nicht _
    einverstanden erklären." & vbCr & "" & vbCr
    MsgBox Msg, vbExclamation Or vbOKOnly, "Willkommen!"
    Sheets("Berechnung").Select
    Range("B2").Select
    End Sub
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets(1).Visible = True
    Sheets(2).Visible = False
    Sheets(3).Visible = False
    End Sub
    

    Anzeige
    Besten Dank,
    11.07.2010 09:16:22
    silex1
    Hallo Mustafa,
    hab es jetzt eingebaut und es funktioniert. Ist so auch ggf. besser, da ich mehr Text unterbringen kann.
    Danke Dir nochmals und schönes Rest-WE, VG Rene
    ;

    Forumthreads zu verwandten Themen

    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

    Excel-Datei nur öffnen, wenn Makros aktiviert sind


    Schritt-für-Schritt-Anleitung

    Um sicherzustellen, dass deine Excel-Datei nur geöffnet wird, wenn die Makros aktiviert sind, kannst du folgende Schritte befolgen:

    1. Öffne dein Excel-Dokument und navigiere zu den VBA-Editor (Alt + F11).

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

      Private Sub Workbook_Open()
         Sheets(2).Visible = True
         Sheets(3).Visible = True
         Sheets(1).Visible = False
         For Each c In Application.CommandBars
             c.Enabled = False
         Next
         If Application.DisplayFormulaBar = True Then
             Application.DisplayFormulaBar = False
         End If
      
         MsgBox "Bitte aktiviere die Makros, um die Datei vollständig nutzen zu können.", vbExclamation, "Achtung!"
      End Sub
      
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
         Sheets(1).Visible = True
         Sheets(2).Visible = False
         Sheets(3).Visible = False
      End Sub
    3. Ersetze die Sheet-Nummern (Sheets(2), Sheets(3), etc.) durch die tatsächlichen Namen deiner Blätter, die sichtbar sein sollen.

    4. Speichere die Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).


    Häufige Fehler und Lösungen

    • Fehler: Die Makros werden nicht ausgeführt.

      • Lösung: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die Option „Alle Makros aktivieren“.
    • Fehler: Das Deckblatt wird nicht ausgeblendet.

      • Lösung: Überprüfe, ob der Code korrekt im Workbook_Open-Modul eingefügt wurde und ob die Sheet-Referenzen korrekt sind.

    Alternative Methoden

    Eine alternative Methode besteht darin, ein Deckblatt zu erstellen, das als Eingang dient. Hierzu kannst du die anderen Blätter ausblenden, solange die Makros nicht aktiviert sind:

    1. Erstelle ein neues Blatt, das als „Deckblatt“ dienen soll.

    2. Blende alle anderen Blätter aus, indem du den folgenden Code einfügst:

      Private Sub Workbook_Open()
         Sheets("Deckblatt").Visible = True
         ' Blenden der anderen Blätter
         Sheets("AndereBlatt1").Visible = False
         Sheets("AndereBlatt2").Visible = False
      End Sub
    3. Wenn die Makros aktiviert sind, kannst du das Deckblatt ausblenden und die relevanten Blätter sichtbar machen.


    Praktische Beispiele

    Hier ist ein Beispiel, wie der Code für das Deckblatt aussehen könnte:

    Private Sub Workbook_Open()
        Sheets("Deckblatt").Visible = False
        Sheets("Daten").Visible = True
        Sheets("Bericht").Visible = True
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Sheets("Deckblatt").Visible = True
        Sheets("Daten").Visible = False
        Sheets("Bericht").Visible = False
    End Sub

    Wenn du die Excel-Datei öffnest, wird zunächst das Deckblatt angezeigt. Nur wenn die Makros aktiviert sind, erscheinen die anderen Blätter.


    Tipps für Profis

    • Verwende aussagekräftige Namen für deine Blätter, um die Übersichtlichkeit zu erhöhen.
    • Teste den Code in einer Kopie deiner Arbeitsmappe, um unerwartete Probleme zu vermeiden.
    • Nutze Kommentare im Code, um die Funktionen der verschiedenen Abschnitte zu erklären. Dies hilft bei der späteren Wartung.

    FAQ: Häufige Fragen

    1. Frage
    Wie kann ich meine Excel-Datei so einstellen, dass sie beim Öffnen eine Warnung anzeigt?
    Antwort: Du kannst die MsgBox-Funktion in deinem Workbook_Open-Code verwenden, um eine Warnung anzuzeigen, wenn die Makros nicht aktiviert sind.

    2. Frage
    Was passiert, wenn die Makros deaktiviert sind?
    Antwort: Wenn die Makros deaktiviert sind, wird der Code im Workbook_Open nicht ausgeführt und die Blätter bleiben ausgeblendet. Du kannst ein Deckblatt verwenden, um diese Situation zu kontrollieren.

    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