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

Forumthread: Immer Speichern unter vorgegebenen Namen

Immer Speichern unter vorgegebenen Namen
16.02.2005 15:31:10
Andreas
Hallo,
ich hab mir mal 'ne Frage an euch Experten:
Also ich möchte das Speichern meiner Original-Datei für andere User unterbinden.
Es soll dem User allerdings das speichern unter einem vorgegebenen Namen erlaubt sein.
Egal ob der User nun Speichern oder Speichern unter anklickt soll dieser Name vorgeschlagen werden.
Nun habe ich das Problem das ich mit dem unten stehenden Code zwar erreiche das sich das Fenster Speichern unter aufmacht, der Name vorgeschlagen wird aber ich zweimal auf speichern unter klicken muß, die Datei aber nicht gespeichert wird.
Wenn also jemand ne Idee hat...

Private Sub Workbook_beforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim Dateiname As String
Dim Speicherpfad As Variant
Dateiname = Application.DefaultFilePath & "\" & "Kopie " & Application.UserName
Speicherpfad = Application.GetSaveAsFilename(InitialFilename:=Dateiname, _
fileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
Title:="Die Datei sollte in Ihrem Standardordner gespeichert werden!")
If Speicherpfad = False Then
Cancel = True
Exit Sub
End If
ActiveWorkbook.SaveAs Speicherpfad
Cancel = True
End Sub

Vielen Dank
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Immer Speichern unter vorgegebenen Namen
UweD
Hallo
Dein Speicheraufruf ist ja wieder ein event. Dadurch wird das Makro erneut durchlaufen..
So gehts aber:

Private Sub Workbook_beforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim Dateiname As String
Dim Speicherpfad As Variant
Dateiname = Application.DefaultFilePath & "\" & "Kopie " & Application.UserName
Speicherpfad = Application.GetSaveAsFilename(InitialFileName:=Dateiname, _
fileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
Title:="Die Datei sollte in Ihrem Standardordner gespeichert werden!")
If Speicherpfad = False Then
Cancel = True
Exit Sub
End If
Application.EnableEvents = False
ActiveWorkbook.SaveAs Speicherpfad
Application.EnableEvents = True
Cancel = True
End Sub

Gruß UweD
Anzeige
DANKE
Andreas
Vielen Dank Uwe,
du hast mir sehr geholfen...
Hiermit gebe ich dir ein virtuelles Bier aus... Prost!

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Immer Speichern unter vorgegebenen Namen in Excel


Schritt-für-Schritt-Anleitung

Um das Speichern deiner Excel-Datei unter einem vorgegebenen Namen zu ermöglichen, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass Benutzer beim Speichern immer den vorgeschlagenen Dateinamen erhalten und gleichzeitig das Speichern der Original-Datei unterbunden wird.

  1. Öffne Excel und lade die Datei, für die du die Funktion implementieren möchtest.
  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.
  3. Klicke im Projektfenster auf "DieseArbeitsmappe".
  4. Füge den folgenden Code ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
    Dim Dateiname As String
    Dim Speicherpfad As Variant
    Dateiname = Application.DefaultFilePath & "\" & "Kopie " & Application.UserName
    Speicherpfad = Application.GetSaveAsFilename(InitialFileName:=Dateiname, _
    fileFilter:="Microsoft Excel-Dateien (*.xls), *.xls", _
    Title:="Die Datei sollte in Ihrem Standardordner gespeichert werden!")
    If Speicherpfad = False Then
        Cancel = True
        Exit Sub
    End If
    Application.EnableEvents = False
    ActiveWorkbook.SaveAs Speicherpfad
    Application.EnableEvents = True
    Cancel = True
End Sub
  1. Schließe den VBA-Editor und speichere deine Excel-Datei als Makro-fähige Datei (*.xlsm).

Jetzt wird beim Speichern der Benutzer aufgefordert, die Datei unter dem vorgeschlagenen Namen zu speichern.


Häufige Fehler und Lösungen

Fehler: Die Datei wird nicht gespeichert.

  • Lösung: Überprüfe, ob das Application.EnableEvents richtig gesetzt ist. Wenn es auf False gesetzt ist, stelle sicher, dass es nach dem Speichern wieder auf True gesetzt wird.

Fehler: Der Dateiname wird nicht vorgeschlagen.

  • Lösung: Stelle sicher, dass die Variable Dateiname korrekt definiert ist und dass Application.DefaultFilePath den richtigen Pfad zurückgibt.

Alternative Methoden

Eine alternative Methode, um das Speichern unter einem vorgegebenen Namen zu steuern, ist die Verwendung von Benutzerformularen. Du könntest ein Formular erstellen, das den gewünschten Dateinamen anzeigt und den Benutzer dazu auffordert, die Datei zu speichern.


Praktische Beispiele

Wenn du in einer Arbeitsumgebung arbeitest, in der mehrere Benutzer dieselbe Vorlage verwenden, kannst du den oben genannten Code anpassen, um spezifische Namen basierend auf Benutzerrollen oder Projektnamen zu generieren. Zum Beispiel:

Dateiname = "Projekt_" & Application.UserName & "_" & Format(Date, "YYYYMMDD")

Dieser Code würde einen Dateinamen generieren, der das Projekt und das aktuelle Datum enthält.


Tipps für Profis

  • Sicherungskopien: Stelle sicher, dass du regelmäßig Sicherungskopien deiner Excel-Dateien machst, insbesondere, wenn du VBA verwendest.
  • Dokumentation deiner Makros: Kommentiere deinen VBA-Code, damit andere Benutzer (oder du selbst in der Zukunft) leicht verstehen können, was jeder Teil des Codes bewirken soll.
  • Testen in einer sicheren Umgebung: Teste neue Makros in einer Kopie deiner Datei, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen (2010 und neuer) funktionieren, solange VBA unterstützt wird.

2. Was ist, wenn ich den vorgeschlagenen Namen ändern möchte? Du kannst den Code einfach anpassen, indem du die Variable Dateiname änderst, um den gewünschten Dateinamen festzulegen.

3. Kann ich das Speichern auch unter bestimmten Bedingungen einschränken? Ja, du kannst Bedingungen im Code hinzufügen, um das Speichern nur unter bestimmten Voraussetzungen zu erlauben, wie z.B. bei bestimmten Benutzern oder Dateiinhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige