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

Forumthread: Befehl nur einmalig ausführen

Befehl nur einmalig ausführen
14.05.2013 10:26:45
Stefan
Hallo zusammen,
ich brauche bitte eure Hilfe.
Ich habe eine Vorlage gebastelt in der folgender Code nur in der .xlt Version durchgeführt werden soll.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
pw = InputBox("Bitte geben sie Ihr Passwort ein")
If Not pw = "8228" Then
Cancel = True
MsgBox "Sie haben kein oder ein falsche Passwort eingeben"
Else
Cancel = False
With Sheets("Protokoll")
Dateiname = .[d10] & Format(.[d8], "_DD.MM.YYYY") & ".xls"
End With
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show Dateiname
Cancel = True
Application.EnableEvents = True
End If
End Sub

(Den Code habe ich gefunden und etwas angepasst)
Meine VBA Kenntnisse sind leider ehr bescheiden bis gar nicht vorhanden.
Kann mir jemand helfen?
Grüße
Stefan

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befehl nur einmalig ausführen
14.05.2013 10:51:19
EtoPHG
Hallo Stefan,
Ich weiss kenn zwar den Zweck nicht, aber kannst es mal so probieren:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vTmp
vTmp = Split(ThisWorkbook.Name, ".")
If Left(vTmp(UBound(vTmp)), 3)  "xlt" Then Exit Sub
pw = InputBox("Bitte geben sie Ihr Passwort ein")
If Not pw = "8228" Then
Cancel = True
MsgBox "Sie haben kein oder ein falsche Passwort eingeben"
Else
Cancel = False
With ThisWorkbook.Worksheets("Protokoll")
Dateiname = .Cells(10, 4) & Format(.Cells(8, 4), "_DD.MM.YYYY") & ".xls"
End With
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show Dateiname
Cancel = True
Application.EnableEvents = True
End If
End Sub
Gruess Hansueli

Anzeige
XL97 --> kein Split. owT
14.05.2013 13:03:05
Rudi

Split für XL97...
14.05.2013 14:00:00
EtoPHG
Danke Rudi,
Mein Alzheimer-Light kommt zurück ;-)
Alles in Allem:
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim vtmp, pw As String, DateiName As String
vtmp = Split97(ThisWorkbook.Name, ".")
If Left(vtmp(UBound(vtmp)), 3)  "xlt" Then Exit Sub
pw = InputBox("Bitte geben sie Ihr Passwort ein")
If Not pw = "8228" Then
Cancel = True
MsgBox "Sie haben kein oder ein falsche Passwort eingeben"
Else
Cancel = False
With ThisWorkbook.Worksheets("Protokoll")
DateiName = .Cells(10, 4) & Format(.Cells(8, 4), "_DD.MM.YYYY") & ".xls"
End With
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show DateiName
Cancel = True
Application.EnableEvents = True
End If
End Sub
Function Split97(ByVal Expression As String, _
Optional ByVal Delimiter As String = " ", _
Optional ByVal Limit As Long = -1)
Const cDSize As Long = 256
Dim sArr() As String
Dim lLim As Long
Dim i As Integer, iLastPos As Integer, iPos As Integer, iOffset As Integer
If (Len(Delimiter) = 0) Then
ReDim sArr(0): sArr(0) = Expression
Else
Select Case Limit
Case -1
lLim = 2 ^ 31 - 1
Case Is  0 And i 
Gruess Hansueli
Anzeige
;

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

Befehl nur einmalig ausführen in Excel


Schritt-für-Schritt-Anleitung

Um einen Befehl in Excel nur einmalig auszuführen, kannst du den folgenden VBA-Code verwenden. Dieser Code fragt nach einem Passwort und führt die Aktion nur aus, wenn das Passwort korrekt eingegeben wurde. Zudem wird sichergestellt, dass der Code nur in einer .xlt-Datei (Excel-Vorlage) ausgeführt wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Workbook aus der Projektansicht aus.
  3. Füge den folgenden Code in das ThisWorkbook-Modul ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim pw As String
    pw = InputBox("Bitte geben sie Ihr Passwort ein")
    If Not pw = "8228" Then
        Cancel = True
        MsgBox "Sie haben kein oder ein falsches Passwort eingegeben"
    Else
        Cancel = False
        With Sheets("Protokoll")
            Dim Dateiname As String
            Dateiname = .Cells(10, 4) & Format(.Cells(8, 4), "_DD.MM.YYYY") & ".xls"
        End With
        Application.EnableEvents = False
        Application.Dialogs(xlDialogSaveAs).Show Dateiname
        Cancel = True
        Application.EnableEvents = True
    End If
End Sub
  1. Speichere die Datei als .xlt, um die Vorlage zu nutzen.

Häufige Fehler und Lösungen

Fehler 1: Passwort wird nicht akzeptiert

  • Stelle sicher, dass du das Passwort korrekt eingibst. Der Code ist case-sensitive.

Fehler 2: Der Dialog zum Speichern öffnet sich nicht

  • Überprüfe, ob der Code im richtigen Modul eingefügt wurde und dass du die Datei als .xlt speicherst.

Fehler 3: Excel stürzt ab

  • Achte darauf, dass Application.EnableEvents immer wieder auf True gesetzt wird, um die Ereignisse zu aktivieren.

Alternative Methoden

Falls du eine andere Methode bevorzugst, um den Befehl nur einmalig auszuführen, kannst du die Verwendung von Workbook_Open in Betracht ziehen, um das Passwort beim Öffnen der Datei abzufragen, statt beim Speichern.

Private Sub Workbook_Open()
    ' Hier kannst du den Passwortschutz einfügen
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du den Code anpassen kannst, um einen anderen Dateinamen zu generieren:

Dateiname = "Backup_" & Format(Date, "YYYYMMDD") & ".xls"

Diese Anpassung sorgt dafür, dass jede Sicherung einen individuellen Namen basierend auf dem aktuellen Datum erhält.


Tipps für Profis

  • Nutze Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft bei der Fehlersuche und verbessert die Lesbarkeit.
  • Wenn du mit Excel 97 oder älteren Versionen arbeitest, denke daran, die entsprechenden Funktionen wie Split97 zu verwenden, die für diese Versionen optimiert sind.

FAQ: Häufige Fragen

1. Was mache ich, wenn ich den VBA-Editor nicht öffnen kann? Stelle sicher, dass du die Entwicklertools in Excel aktiviert hast. Gehe zu Datei -> Optionen -> Menüband anpassen und aktiviere die Entwicklertools.

2. Kann ich den Code auch in Excel 365 verwenden? Ja, der gezeigte Code funktioniert in Excel 365 sowie in den meisten anderen Versionen von Excel, die VBA unterstützen.

3. Wie kann ich den Passwortschutz ändern? Ändere einfach die Zeile If Not pw = "8228" in den gewünschten Passworttext.

4. Funktioniert dieser Code in einer Excel-Webanwendung? Nein, VBA funktioniert nicht in Excel Online oder in Webanwendungen. Der Code muss in einer Desktop-Version von Excel ausgeführt werden.

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