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

Forumthread: SaveAs Pfad und Name als variable

SaveAs Pfad und Name als variable
05.11.2007 15:41:23
maruseru
Hallo werte Profis
In untenstehenden Code werden verschiedene Bereiche geprüft ob sie leer sind oder nicht. Sind alle Bereiche ausgefüllt, soll die datei als
c:\temp\RfC_Form_"Benutzer".xls abgelegt werden. Fuktioniert aber nicht so wie gedacht.
Danke und Gruss
Maruseru

Private Sub CommandButton3_Click()
Dim rngPflicht As Range, rngBereich As Range
Dim intLeere As Integer
Set rngPflicht = [D5,D10,D15,D20,D25,D30,D35,D40,G4]
For Each rngBereich In rngPflicht.Areas
intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
Next
If intLeere > 0 Then
MsgBox "You have not filled in all mandatory green fields for the calculation! ",  _
vbInformation, "INFORMATION"
Else
On Error Resume Next 'If save has beeen canceled
If ActiveWorkbook.Saved Then
ActiveWorkbook.Save
Else
'user = Application.UserName
user = Environ("Username")
Path = "c:\temp"
ActiveWorkbook.SaveAs Filename = Path & "\RfC Form_" & user & ".xls", FileFormat:= _
xlNormal
MsgBox "The data have been saved temporary as c:\temp\RfC Form_" & user & ".xls" & _
_
vbCrLf & vbCrLf & "To continued click on the Button Main Menu!", vbInformation, "INFORMATION"
End If
End If
Application.ScreenUpdating = True
End Sub


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SaveAs Pfad und Name als variable
05.11.2007 15:47:00
Tino
Hallo,
gibt es den Ordner "c:\temp" ?
Wenn ja was funktioniert nicht?
Gruss
Tino

AW: SaveAs Pfad und Name als variable
05.11.2007 15:56:56
Tino
Hallo,
so hiermit müsste es gehen.
Der Ordner temp sollte aber schon vorhanden sein, sonst musst du ihn zuvor erstellen!

user = Application.UserName
Path = "C:\temp"
ActiveWorkbook.SaveAs Filename:= _
Path & "\RfC Form_" & user & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False


Gruss
tino

Anzeige
AW: SaveAs Pfad und Name als variable
05.11.2007 15:57:00
Rudi
Hallo,

Fuktioniert aber nicht so wie gedacht.


was?


Sub tt()
Dim rngPflicht As Range, rngTest As Range
With Sheets(1)
Set rngPflicht = .Range("D5,D10,D15,D20,D25,D30,D35,D40,G4")
End With
On Error Resume Next
Set rngTest = rngPflicht.SpecialCells(xlCellTypeConstants)
If rngTest.Count 


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: SaveAs Pfad und Name als variable
05.11.2007 16:38:45
maruseru
Hallo Rudi, hallo Tino
Die Korrektur von Tino hat mein Problem beim Speichern gelöst, super. Der Code von Rudi präzisiert mir in welchem Tabellenblatt ich die verschienen Bereiche abfrage, kann Fehler vermeiden/einschränken.
Beiden einen speziellen Dank. Allen anderen Profis generell Danke für die ranschen und guten Antworten.
Maruseru
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Speichern von Excel-Dateien mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton3_Click()
       Dim rngPflicht As Range, rngBereich As Range
       Dim intLeere As Integer
       Set rngPflicht = [D5,D10,D15,D20,D25,D30,D35,D40,G4]
    
       For Each rngBereich In rngPflicht.Areas
           intLeere = intLeere + Application.WorksheetFunction.CountBlank(rngBereich)
       Next
    
       If intLeere > 0 Then
           MsgBox "You have not filled in all mandatory green fields for the calculation!", vbInformation, "INFORMATION"
       Else
           On Error Resume Next 'If save has been canceled
           If ActiveWorkbook.Saved Then
               ActiveWorkbook.Save
           Else
               user = Environ("Username")
               Path = "c:\temp"
               ActiveWorkbook.SaveAs Filename:=Path & "\RfC Form_" & user & ".xls", FileFormat:=xlNormal
               MsgBox "The data have been saved temporary as c:\temp\RfC Form_" & user & ".xls", vbInformation, "INFORMATION"
           End If
       End If
       Application.ScreenUpdating = True
    End Sub
  4. Erstelle den Ordner "c:\temp":

    • Stelle sicher, dass der Ordner "c:\temp" existiert, bevor du das Skript ausführst.
  5. Füge einen Button hinzu:

    • Gehe zurück zu deiner Excel-Arbeitsmappe und füge einen Button ein, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Ordner existiert nicht:

    • Stelle sicher, dass der Ordner "c:\temp" vor der Ausführung des Codes existiert. Andernfalls wird das Speichern fehlschlagen.
  • Syntaxfehler bei SaveAs:

    • Verwende die korrekte Syntax ActiveWorkbook.SaveAs Filename:=Path & "\..., um den Dateinamen und Pfad korrekt zu setzen.

Alternative Methoden

  • SaveAs2 verwenden:

    • Du kannst die Application.ActiveWorkbook.SaveAs2 Methode verwenden, um zusätzliche Optionen beim Speichern zu nutzen.
    Application.ActiveWorkbook.SaveAs2 Filename:=Path & "\RfC Form_" & user & ".xls", FileFormat:=xlOpenXMLWorkbook
  • Direktes Speichern ohne Dialog:

    • Wenn du den Dialog zum Speichern nicht anzeigen möchtest, kannst du die ActiveWorkbook.Save Methode verwenden, um die Datei mit dem aktuellen Namen zu speichern.

Praktische Beispiele

  1. Speichern mit Benutzername im Dateinamen:

    user = Application.UserName
    ActiveWorkbook.SaveAs Filename:="C:\temp\Report_" & user & ".xlsx", FileFormat:=xlOpenXMLWorkbook
  2. Dynamisches Speichern in Unterordnern:

    Path = "C:\temp\Reports\"
    ActiveWorkbook.SaveAs Filename:=Path & "Report_" & Format(Now, "yyyy-mm-dd") & ".xls"

Tipps für Profis

  • Fehlerbehandlung einfügen:

    • Verwende On Error GoTo anstelle von On Error Resume Next, um spezifische Fehler besser zu handhaben.
  • Verwende Variablen für Dateiformate:

    • Definiere eine Konstante für das Dateiformat, um den Code wartungsfreundlicher zu gestalten:
      Const xlFileFormat As Long = xlOpenXMLWorkbook

FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Datei als PDF speichern? Du kannst die Methode ExportAsFixedFormat verwenden:

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\temp\Report.pdf"

2. Wie verhindere ich, dass Benutzer den Speicherort ändern? Du kannst den Speicherort im Code festlegen und keinen Dialog anzeigen, indem du nur die Save Methode verwendest.

3. Wie kann ich die Datei mit einem Passwort schützen? Füge die Parameter Password: und WriteResPassword: in der SaveAs Methode hinzu, um die Datei mit einem Passwort zu speichern.

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