Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Speichern ohne Dateiendung. Warum nur? | Herbers Excel-Forum


Betrifft: Speichern ohne Dateiendung. Warum nur? von: chandler
Geschrieben am: 06.01.2012 08:41:51

Hallo,

nach langer Recherche habe ich mich entschlossen doch zu fragen.

Möchte gerne einzelne Tabelle/n speichern als Tabellenname mit aktuellem Datum.

Habe leider zwei Fragen:

1. Warum wird die Filename extension XLS respektive XLSM (Excel 2010) nicht angehängt?

2. Unter Excel 2010 bekomme ich zusätzlich folgende Meldeng:

" Die folgenden Features können in Arbeitsmappen ohne Makros nicht gespeichert werden

.VB Projekt

…. Wählen Sie dann einen Datentyp mit aktivierten Makros in der Liste 'Dateityp' aus…"

Hat das war damit zu tun, dass die Tabellen ein Makro als

Private Sub Worksheet_Activate() hat?

Sub Save_n() 'einzelne Tabellen speichern
Dim Tabelle
If MsgBox(prompt:="Möchten Sie die Tabelle speichern?", Buttons:=vbYesNo + vbQuestion) _
= vbNo Then Exit Sub

ActiveSheet.Copy

Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & Format(Now, _
 " DD.MM.YYYY"), "Microsoft Excel (*.XLS),*.XLS")

'Excel 2010
'Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & Format( _
Now, " DD.MM.YYYY"), "Microsoft Excel (*.XLSM),*.XLSM")

If Tabelle <> False Then

On Error Resume Next
ActiveWorkbook.SaveAs Filename:=Tabelle
If Err.Number > 0 Then MsgBox "Tabelle wurde nicht gespeichert!"
On Error GoTo 0
End If

ERRHANDLER:
ActiveWorkbook.Close SaveChanges:=False
If Err.Number > 0 Then MsgBox Err.Description, , "Fehler Nr. " & Err.Number

End Sub


Hat jemand eine Idee warum die Dateinamenserweiterung nicht angehängt wird?
Was sind das für Features die ohne Makros nicht gespeichert werden können?

Vorab vielen Dank. Grüße chandler

  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: selli
Geschrieben am: 06.01.2012 08:53:56

hallo chandler,

bin zwar kein experte deiner excelversion, denke aber, dass es damit zu tun hat:

du kopierst ja nur die tabelle (ohne makros) und willst diese speichern.
das format xlsm bezeichnet ja aber exceldateien die makros enthalten.
die für dich passende endung wäre demzufolge xlsx.

ist aber nur so ins blaue geraten. lasse die frage deshalb noch offen.
gruß
selli


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: chandler
Geschrieben am: 06.01.2012 09:01:01

Hallo selli,

vielen Dank für den Tipp.

Leider ist die 1. Frage damit nicht gelöst, die Filename extension XLS wird nicht angehängt unter Excel 2003.

Und das ist mein Problem.

Grüße chandler


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: mumpel
Geschrieben am: 06.01.2012 11:03:29

Hallo!

Hier mal etwas kürzer. In Excel 2003 wird als XLS gespeichert, in Excel 2007/2010 als XLSX

   Sub Save_n()
   Dim Tabelle As String
   
   Application.DisplayAlerts = False
   
   If MsgBox("Möchten Sie die Tabelle speichern?", vbYesNo, "Speichern?") = vbNo Then Exit Sub
   
   ActiveSheet.Copy
   
   Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name, _
                                           IIf(Val(Application.Version) > 11, _
                                           "Microsoft Excel Arbeitsmappe (*.XLSX),*.XLSX", _
                                           "Microsoft Excel 97-2003 (*.XLS),*.XLS"))
   

   If Tabelle = "Lasch" Then Exit Sub
   

   With ActiveWorkbook
       .SaveAs Filename:=Tabelle, FileFormat:=IIf(Val(Application.Version) > 11, 51, xlNormal)
       .Close
   End With
   
   Application.DisplayAlerts = True
   
   
   End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann: VBA in HTML 2.0
Bearbeitet von mumpel



Code erstellt und getestet in Office 2010.


Gruß, René


  

Betrifft: Korrektur: Fehler in Zeile 9 von: mumpel
Geschrieben am: 06.01.2012 11:06:01

Kleiner Fehler in Zeile 9. Muss natürlich heissen: If Tabelle = "Falsch" Then Exit Sub


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: marcl
Geschrieben am: 06.01.2012 09:01:37

Hallo chandler,

versuch mal folgendes:

DeinName = ThisWorkbook.Path & "\" & ActiveSheet.Name & " " & Format(Now, "DD.MM.YYYY") & ".xlsb"
ThisWorkbook.SaveAs Filename:=DeinName, FileFormat:=xlExcel12

zum Hinweis:
51 = xlOpenXMLWorkbook (without macro's in 2007, .xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007, .xlsm)
50 = xlExcel12 (Excel Binary Workbook in 2007 with or without macro's, .xlsb)
56 = xlExcel8 (97-2003 format in Excel 2007, .xls)

Gruß
marcl


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: chandler
Geschrieben am: 06.01.2012 10:38:30

Hallo marc,

leider funktioniert es nicht wie ich es angedacht habe. Hier als Beispiel Excel 2003

Erstens, es soll nur die aktive Tabelle als einzelne Datei gespeichert werden und nicht die ganze Datei.
Zweitens, das " Fenster Speicher unter" soll geöffnet werden.

Sub test() 'einzelne Tabellen speichern

If MsgBox(prompt:="Möchten Sie die Tabelle speichern?", Buttons:=vbYesNo + vbQuestion) _
= vbNo Then Exit Sub
strDateiname = Range("AO2").Value

ActiveSheet.Copy

strDateiname = ThisWorkbook.Path & "\" & ActiveSheet.Name & " " & Format(Now, "DD.MM.YYYY") & ". _
xls"
ThisWorkbook.SaveAs Filename:=strDateiname, FileFormat:=xlExcel8

ActiveWorkbook.Close SaveChanges:=False

End Sub
Die ganze Datei wird kopiert und nicht die einzelne Tabelle, zudem bleibt die neue Datei offen und Quelle-Datei wird geschlossen.

Grüße chandler


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: Hajo_Zi
Geschrieben am: 06.01.2012 10:52:46

ActiveSheet.Copy
Application.Dialogs(xlDialogSaveAs).Show "" ' speichern unter


GrußformelHomepage


  

Betrifft: AW: Speichern ohne Dateiendung. Warum nur? von: mumpel
Geschrieben am: 06.01.2012 11:13:59

Natürlich die ganze Datei, wenn Du "ThisWorkbook.SaveAs" schreibst. In Deinem ersten Makro hast Du es richtig gemacht, nämlich "ActiveWorkbook.SaveAs".


  

Betrifft: Übrigens... von: mumpel
Geschrieben am: 06.01.2012 11:18:27

"xlExcel8" gibt es in Excel 2003 nicht, dort muss es "xlNormal" heissen. Wenn Du die Fehleranweisung "On Error Resume Next" aus Deinem Makro entfernen würdest, dan würden Dir alle Fehler angezeigt werden.


  

Betrifft: Wenn du Daten aus einer Zelle,.... von: Matthias
Geschrieben am: 06.01.2012 10:50:31

einlesen möchtest....

Hallo Marc,

In "E3" steht dein Speichername:

Sub SpeichernAls()
dname = Sheets("1").Range("A2").Value
ename = Sheets("1").Range("B2").Value
ActiveWorkbook.SaveAs "C:\Archiv\Anwesenheit\" & dname & ename & ".xlsm"
Range("E3").Select ' Angabe aus einer Zelle entnehmen

End Sub
Reicht dir sowas ?

Gruß Matthias


  

Betrifft: Oops,...falsch beschrieben,... von: Matthias
Geschrieben am: 06.01.2012 10:54:00

hier werden Daten aus Zelle "A2" & "B2" als Dateiname geschrieben:

Sub SpeichernAls()
dname = Sheets("1").Range("A2").Value
ename = Sheets("1").Range("B2").Value
ActiveWorkbook.SaveAs "C:\Archiv\Anwesenheit\" & dname & ename & ".xlsm"  ' ENDUNG ANPASSEN!!!
Range("E3").Select 
End Sub
Matthias


  

Betrifft: Übrigens... von: mumpel
Geschrieben am: 06.01.2012 11:08:43

Dateierweiterungen sollte man immer klein schreiben, nicht in Großbuchstaben.


  

Betrifft: AW: Übrigens... von: chandler
Geschrieben am: 06.01.2012 11:35:38

Hallo zusammen,

vielen Dank erstmal für die Hilfe, ich habe es fast geschafft, nur noch Excel 2010 macht Problemme.

Habe bereits folgendes erreicht, aber nur in Excel 2003. Komisch nur, dass
der Dateiname im Fenster "Speicher unter" in Gänsefüsschen ist, aber es funktioniert.

Sub Speichern() 'einzelne Tabellen speichern
Dim Tabelle
If MsgBox(prompt:="Möchten Sie die Tabelle speichern?", Buttons:=vbYesNo + vbQuestion) _
= vbNo Then Exit Sub
ActiveSheet.Copy

Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & " " &  _
Format(Now, "DD.MM.YYYY") & ".xls")

If Tabelle <> False Then
On Error Resume Next
ActiveWorkbook.SaveAs Filename:=Tabelle
If Err.Number > 0 Then MsgBox "Tabelle wurde nicht gespeichert!"
On Error GoTo 0
End If

ERRHANDLER:
ActiveWorkbook.Close SaveChanges:=False
If Err.Number > 0 Then MsgBox Err.Description, , "Fehler Nr. " & Err.Number

End Sub
Wenn ich aber für Excel 2010 die Endung anpasse und statt ".xls" , ".xlsm" schreibe bekomme ich eine Meldung:

" Die folgenden Features können in Arbeitsmappen ohne Makros nicht gespeichert werden

.VB Projekt

…. Wählen Sie dann einen Datentyp mit aktivierten Makros in der Liste 'Dateityp' aus…"

Wie bereits erwähnt die einzelnen Tabellen haben ein kleines Makro als "Worksheet_Activate()"

Warum klappt es nicht bei Excel 2010 warscheinlich auch bei Excel 2007?

Kann mir dabei jemand helfen? Danke im Voraus. Grüße chandler


  

Betrifft: AW: Übrigens... von: mumpel
Geschrieben am: 06.01.2012 11:41:39

Ntze doch das makro aus meiner Antwort von 11:03 Uhr. https://www.herber.de/forum/messages/1244858.html


  

Betrifft: Nachgefragt!? von: chandler
Geschrieben am: 06.01.2012 11:59:20

Hallo mumpel,

Makro funnktioniert supper, vielen Dank.

Ich hätte gerne noch das aktuelle Datum und habe deshalb das Makro so ergänzt, leider ist die Dateiendung auch weg.

Sub Save_n()
   Dim Tabelle As String
   
   Application.DisplayAlerts = False
   
   If MsgBox("Möchten Sie die Tabelle speichern?", vbYesNo, "Speichern?") = vbNo Then Exit Sub
   
   ActiveSheet.Copy
   
   Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & " " &  _
Format(Now, "DD.MM.YYYY"), _
                                           IIf(Val(Application.Version) > 11, _
                                           "Microsoft Excel Arbeitsmappe (*.XLSX),*.XLSX", _
                                           "Microsoft Excel 97-2003 (*.XLS),*.XLS"))
   

   If Tabelle = "Lasch" Then Exit Sub
   

   With ActiveWorkbook
       .SaveAs Filename:=Tabelle, FileFormat:=IIf(Val(Application.Version) > 11, 51, xlNormal)
       .Close
   End With
   
   Application.DisplayAlerts = True
   
   
   End Sub
Warum funktioniertes nicht, wenn das mit dem & " " & Format(Now, "DD.MM.YYYY") ergänzt wird?

Vorab vielen Dank Grüße chandler


  

Betrifft: AW: Nachgefragt!? Frage noch eimal offen von: chandler
Geschrieben am: 06.01.2012 12:00:59

Hallo mumpel,


Makro funnktioniert supper, vielen Dank.

Ich hätte gerne noch das aktuelle Datum und habe deshalb das Makro so ergänzt, leider ist die Dateiendung auch weg.

Sub Save_n()
   Dim Tabelle As String
   
   Application.DisplayAlerts = False
   
   If MsgBox("Möchten Sie die Tabelle speichern?", vbYesNo, "Speichern?") = vbNo Then Exit Sub
   
   ActiveSheet.Copy
   
   Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & " " &   _
_
Format(Now, "DD.MM.YYYY"), _
                                           IIf(Val(Application.Version) > 11, _
                                           "Microsoft Excel Arbeitsmappe (*.XLSX),*.XLSX", _
                                           "Microsoft Excel 97-2003 (*.XLS),*.XLS"))
   

   If Tabelle = "Lasch" Then Exit Sub
   

   With ActiveWorkbook
       .SaveAs Filename:=Tabelle, FileFormat:=IIf(Val(Application.Version) > 11, 51, xlNormal)
       .Close
   End With
   
   Application.DisplayAlerts = True
   
   
   End Sub
Warum funktioniertes nicht, wenn das mit dem & " " & Format(Now, "DD.MM.YYYY") ergänzt wird?

Vorab vielen Dank Grüße chandler


  

Betrifft: AW: Nachgefragt!? Frage noch eimal offen von: mumpel
Geschrieben am: 06.01.2012 12:20:22

So wie es aussieht mag "GetSaveAsFileName" es nicht, wenn man das Datum als String anhängt.


  

Betrifft: Nachtrag von: mumpel
Geschrieben am: 06.01.2012 12:28:14

1. Das Problem ist ganz einfach erklärt. Da Du in der Datumsangabe Punkte verwendest, geht Excel von einer Dateiendung aus. Denn durch Punkte werden Dateiname und Dateiendung von einander getrennt. Nutze stattdessen Unterstriche, dann funktioniert es auch.

2. Du solltest zuerst den Dateinamen abfragen, dann erst die Tabelle kopieren. Sonst ahst Du eine kopierte Tabelle offen, wenn Du auf "Abbrechen" klickst.

   Sub Save_n()
   Dim Tabelle As String
   
   Application.DisplayAlerts = False
   
   If MsgBox("Möchten Sie die Tabelle speichern?", vbYesNo, "Speichern?") = vbNo Then Exit Sub
   
   
   
   Tabelle = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & ActiveSheet.Name & " " & _
                                           Format(Now, "DD_MM_YYYY"), _
                                           IIf(Val(Application.Version) > 11, _
                                           "Microsoft Excel Arbeitsmappe (*.xlsx),*.xlsx", _
                                           "Microsoft Excel 97-2003 (*.xls),*.xls"))
   

   If Tabelle = "Falsch" Then Exit Sub
   
   ActiveSheet.Copy

   With ActiveWorkbook
       .SaveAs Filename:=Tabelle, FileFormat:=IIf(Val(Application.Version) > 11, 51, xlNormal)
       .Close
   End With
   
   Application.DisplayAlerts = True
    
   End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann: VBA in HTML 2.0
Bearbeitet von mumpel



Code erstellt und getestet in Office 2010.



  

Betrifft: Das war's!!! Vielen vielen Dank von: chandler
Geschrieben am: 06.01.2012 12:28:58

Hallo mumpel,

Hallo an Alle,

es funktioniert so, wie ich es mir vorgestellt habe.

Vielen Dank.

Grüße chandler


Beiträge aus den Excel-Beispielen zum Thema " Speichern ohne Dateiendung. Warum nur?"