Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA Speichern Unter
Stefan
Hallo nochmals
bräuchte den VBA Befehl den ich mit einer Autoform verbinden kann für Speichern unter.
Also ich möchte das sich wenn ich die Datei schliese das
-Fenster öffnet "Speichern unter"
dabei optimaler weise ein
-vorgegebener Speicherpfad schon offen
ist . Der
Wert aus Tabellenblatt1 Feld A1
als Dateiname schon als eintrag vorliegt ich jedoch selber das ok zum abspeichern gebe
LG
Stefan

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

Betreff
Benutzer
Anzeige
Application.Dialogs(xlDialogSaveAs).Show
09.10.2011 15:40:08
Matthias
Hallo

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Dialogs(xlDialogSaveAs).Show ThisWorkbook.Path & Tabelle1.Range("A1")
End Sub
Gruß Matthias
kl. korrektur
09.10.2011 15:53:43
Matthias
Hallo
kleine Korrektur
Application.Dialogs(xlDialogSaveAs).Show ThisWorkbook.Path & "\" & Tabelle1.Range("A1")
Gruß Matthias
AW: Application.Dialogs(xlDialogSaveAs).Show
09.10.2011 15:55:49
Stefan
Ne das war es nicht so ganz
also der Name der Tabelle "Tabelle1" ist nur ein beipiel gewesen.
Bei mir heisst sie "PEP"
desweiteren soll nicht der Dateiordner "Eigene Dateien " als Name mit vorgeschlagen werden sondern nur der Dateipfad zu Eigene Dateien schon geöffnet sein.
Mir würde es schon reichen wenn
Speichern unter sich öffnet und ich den Dateinamen aus "A3" vorgeschlagen bekomme.
P.S. Falls wichtig: Format in A3 TT.MM.JJ "PEP" mit der Formel =Jetzt()
Anzeige
AW: VBA Speichern Unter
09.10.2011 15:42:07
Daniel
Hi
dazu dieses Makro ins Modul "DieseArbeitsmappe"

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Dialogs(xlDialogSaveAs).Show "C:\Mein\Pfad\" & Sheets("Tabelle1").Range("A1").Value
End Sub
Gruß, Daniel
AW: VBA Speichern Unter
09.10.2011 15:43:30
Tino
Hallo,
kannst mal diesen Code testen.
kommt als Code in DieseArbeitsmappe

Option Explicit 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim strPfad$, strFileName$ 
Dim sFile As String 
 
'Pfad Vorgabe 
strPfad = "D:\Bilder\" 
'Dateiname (hier aus A1 evtl. Tabelle anpassen) 
strFileName = Sheets("Tabelle1").Range("A1") 
 
sFile = Speichern_Unter(strFileName, strPfad) 
  
If sFile <> "" Then 
    MsgBox "Datei wurde gespeichert unter" & vbCr & sFile, vbInformation 
Else 
    MsgBox "Datei wurde nicht gespeichert unter neuen Namen/Pfad gespeichert", vbExclamation 
End If 
End Sub 
kommt als Code in Modul

Option Explicit 
 
'Function Dialog Speichern unter ********************************************************************** 
Function Speichern_Unter(Optional ByRef sFile_Name As String, Optional ByVal sPath As String) As String 
Dim ArrFileFormat, varIndex, sExtension$, iFileFormat% 
Dim SaveR 
'Extension der Datei 
    sExtension$ = Right$(sFile_Name, Len(sFile_Name) - InStrRev(sFile_Name, ".")) 
      
    ArrFileFormat = Array("xlsx", "xlsm", "xlsb", "xls") 'Datei Versionen 
    varIndex = Application.Match(sExtension, ArrFileFormat, 0) 'Index für Dialog und Angabe 
      
'ist Angabe eine Excel Datei? 
    If IsError(varIndex) Then 
        MsgBox "kein Excel- Datei vbCr & sFile_Name, vbExclamation" 
        Exit Function 
    End If 
      
'Ordner da? 
    If sPath = "" Then sPath = ThisWorkbook.Path 
    If sPath = "" Then sPath = Application.DefaultFilePath 
    If Dir(sPath, vbDirectory) = "" Then 
      MsgBox "Ordner exestiert nicht", vbCritical 
      Exit Function 
    End If 
     
'Wechselt das aktuelle Laufwerk. 
    ChDrive Left$(sPath, 2) 
'Wechselt das aktuelle Verzeichnis oder den aktuellen Ordner 
    ChDir sPath 
  
  
'Dialog aufrufen 
    If Val(Application.Version) > 11 Then 
        sFile_Name = Application.GetSaveAsFilename(sFile_Name, _
            "Excel Arbeitsmappe ohne VBA (*.xlsx),*.xlsx," & _
            "Excel Arbeitsmappe mit Makros (*.xlsm),*.xlsm," & _
            "Excel Binärarbeitsmappe (*.xlsb),*.xlsb," & _
            "Excel 97-2003 Arbeitsmappe (*.xls),*.xls", varIndex, "Speichern unter") 
    ElseIf sExtension$ = "xls" Then 
            sFile_Name = Application.GetSaveAsFilename(sFile_Name, _
            "Excel Arbeitsmappe (*.xls),*.xls", 1, "Speichern unter") 
    Else 
            MsgBox "Extension kann mit dieser Excel- Version nicht gespeichert werden!", vbCritical 
            Exit Function 
    End If 
      
'Dialog abgebrochen! 
    If sFile_Name = CStr(False) Then Exit Function 
  
'nochmal Abfragen fals im Dialog geändert 
    sExtension$ = Right$(sFile_Name, Len(sFile_Name) - InStrRev(sFile_Name, ".")) 
  
'Formatabfrage 
    iFileFormat = File_Format(sExtension$) 
     
    If iFileFormat = 0 Then 
        MsgBox "Auswahl ist kein Excel File!", vbCritical 
        Exit Function 
    End If 
  
'welche Excelversion 
On Error GoTo Error_Handler: 
    If Val(Application.Version) > 11 Then 
        'Datei im richtigen Format speichern 
        ActiveWorkbook.SaveAs sFile_Name, iFileFormat 
    ElseIf iFileFormat = 56 Then 
        'bis Version 11, speichern als *.xls 
        ActiveWorkbook.SaveAs sFile_Name 
    Else 
        MsgBox "Extension kann mit dieser Excel- Version nicht gespeichert werden!", vbCritical 
        Exit Function 
    End If 
Error_Handler: 
    If Err.Number <> 0 Then 
        Speichern_Unter = sFile_Name 
    Else 
        MsgBox Err.Description, vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
              "Error: " & Err.Number, _
              Err.HelpFile, _
              Err.HelpContext 
    End If 
End Function 
  
'Funktion zum ermitteln des Dateiformats ab xl2007 
Private Function File_Format(sExtension$) 
Select Case LCase(sExtension$) 
    Case "xlsx": File_Format = 51 
    Case "xlsm": File_Format = 52 
    Case "xlsb": File_Format = 50 
    Case "xls": File_Format = 56 
End Select 
End Function 
Gruß Tino
Anzeige
eine Zeile noch ändern...
09.10.2011 15:52:39
Tino
Hallo,
mach aus der Zeile

If Err.Number  0 Then

besser diese

If Err.Number = 0 Then 
Gruß Tino
AW: eine Zeile noch ändern...
09.10.2011 15:58:54
Stefan
Ups da will man dem ersten antworten und schon hat man noch mehr vorschläge ich glaube jetzt hab ichs Vielen Dank an alle un LG

328 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige