Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Speichern ohne Dateiendung. Warum nur?

Speichern ohne Dateiendung. Warum nur?
chandler
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
Anzeige
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 08:53:56
selli
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
Anzeige
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 09:01:01
chandler
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
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 11:03:29
mumpel
Hallo!
Hier mal etwas kürzer. In Excel 2003 wird als XLS gespeichert, in Excel 2007/2010 als XLSX
Gruß, René
Anzeige
Korrektur: Fehler in Zeile 9
06.01.2012 11:06:01
mumpel
Kleiner Fehler in Zeile 9. Muss natürlich heissen: If Tabelle = "Falsch" Then Exit Subcolor>
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 09:01:37
marcl
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
Anzeige
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 10:38:30
chandler
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
Anzeige
AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 10:52:46
Hajo_Zi
ActiveSheet.Copy
Application.Dialogs(xlDialogSaveAs).Show "" ' speichern unter

AW: Speichern ohne Dateiendung. Warum nur?
06.01.2012 11:13:59
mumpel
Natürlich die ganze Datei, wenn Du "ThisWorkbook.SaveAs" schreibst. In Deinem ersten Makro hast Du es richtig gemacht, nämlich "ActiveWorkbook.SaveAs".
Anzeige
Übrigens...
06.01.2012 11:18:27
mumpel
"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.
Wenn du Daten aus einer Zelle,....
06.01.2012 10:50:31
Matthias
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
Anzeige
Oops,...falsch beschrieben,...
06.01.2012 10:54:00
Matthias
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
Anzeige
Übrigens...
06.01.2012 11:08:43
mumpel
Dateierweiterungen sollte man immer klein schreiben, nicht in Großbuchstaben.
AW: Übrigens...
06.01.2012 11:35:38
chandler
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
Anzeige
Nachgefragt!?
06.01.2012 11:59:20
chandler
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
Anzeige
AW: Nachgefragt!? Frage noch eimal offen
06.01.2012 12:00:59
chandler
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
Anzeige
AW: Nachgefragt!? Frage noch eimal offen
06.01.2012 12:20:22
mumpel
So wie es aussieht mag "GetSaveAsFileName" es nicht, wenn man das Datum als String anhängt.
Nachtrag
06.01.2012 12:28:14
mumpel
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.
Anzeige
Das war's!!! Vielen vielen Dank
06.01.2012 12:28:58
chandler
Hallo mumpel,
Hallo an Alle,
es funktioniert so, wie ich es mir vorgestellt habe.
Vielen Dank.
Grüße chandler
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speichern von Excel-Dateien ohne Dateiendung


Schritt-für-Schritt-Anleitung

  1. Makro zur Speicherung erstellen: Du kannst ein Makro schreiben, um die aktive Tabelle zu speichern. Hier ist ein Beispiel:

    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 = "Falsch" Then Exit Sub
        With ActiveWorkbook
            .SaveAs Filename:=Tabelle, FileFormat:=IIf(Val(Application.Version) > 11, 51, xlNormal)
            .Close
        End With
        Application.DisplayAlerts = True
    End Sub
  2. Dateiendung anpassen: Stelle sicher, dass du die Dateiendung in der GetSaveAsFilename-Methode richtig angibst. Bei Excel-Dateien mit Makros solltest du *.XLSM verwenden.

  3. Dateinamen formatieren: Achte darauf, dass du Unterstriche statt Punkte im Datum verwendest, um zu vermeiden, dass Excel es als Dateiendung interpretiert.


Häufige Fehler und Lösungen

  • Fehler: "Die folgenden Features können in Arbeitsmappen ohne Makros nicht gespeichert werden"
    Dies passiert, wenn du versuchst, eine Datei mit einer XLSM-Endung zu speichern, die kein Makro enthält. Stelle sicher, dass du die richtige Dateiendung für Excel-Dateien wählst.

  • Fehler: Datei wird ohne Endung gespeichert
    Dies kann passieren, wenn du Punkte im Dateinamen verwendest. Nutze stattdessen Unterstriche, um dies zu vermeiden.


Alternative Methoden

  • Dialogfeld "Speichern unter" verwenden: Du kannst das Dialogfeld auch direkt aufrufen, um dem Benutzer die Möglichkeit zu geben, die Datei manuell zu speichern. Der Befehl lautet:

    Application.Dialogs(xlDialogSaveAs).Show ""
  • Direktes Speichern ohne Makro: Wenn du die Datei ohne ein Makro speichern möchtest, kannst du manuell die Speichern unter-Option in Excel nutzen und die Dateiendung auswählen.


Praktische Beispiele

  1. Einzelne Tabelle speichern: Um eine einzelne Tabelle zu speichern, benutze das folgende Makro:

    Sub Speichern()
        Dim Tabelle
        If MsgBox(prompt:="Möchten Sie die Tabelle speichern?", Buttons:=vbYesNo + vbQuestion) = vbNo Then Exit Sub
        ActiveSheet.Copy
        Tabelle = ThisWorkbook.Path & "\" & ActiveSheet.Name & " " & Format(Now, "DD_MM_YYYY") & ".xls"
        ActiveWorkbook.SaveAs Filename:=Tabelle, FileFormat:=xlExcel8
        ActiveWorkbook.Close SaveChanges:=False
    End Sub
  2. Speichern mit Datum: Du kannst das Datum ins Dateinamenformat einfügen, um die Aktualität zu kennzeichnen.


Tipps für Profis

  • Dateiendungen immer klein schreiben: Achte darauf, dass du die Dateiendungen in Kleinbuchstaben angibst, um Komplikationen zu vermeiden.

  • Makros testen: Teste dein Makro in einer sicheren Umgebung, um sicherzustellen, dass es wie gewünscht funktioniert, bevor du es in einer wichtigen Datei anwendest.

  • Fehlerbehandlung einfügen: Verwende On Error-Anweisungen, um mögliche Fehler abzufangen und die Benutzer darüber zu informieren.


FAQ: Häufige Fragen

1. Warum wird die Dateiendung nicht angehängt?
Dies geschieht oft, wenn Punkte im Dateinamen verwendet werden. Nutze stattdessen Unterstriche.

2. Wie kann ich die Dateiendung für Excel-Dateien ändern?
Du kannst dies im GetSaveAsFilename-Befehl tun, indem du die gewünschte Dateiendung angibst.

3. Was mache ich, wenn ich keine Berechtigung zum Speichern habe?
Überprüfe die Dateiberechtigungen oder wähle einen anderen Speicherort, an dem du Schreibrechte hast.

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