Clever-Excel-Forum

Normale Version: Savecopyas
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo miteinander,

seit einer Anfrage, welche hier gestellt wurde, beschäftige ich mich mit der Savecopyas - Methode. Heute habe ich dann endlich gelesen, dass man damit nicht vorgeben kann ob man als "xlsm" oder "xlsx" speichern kann. Ich habe weiter recherchiert und Microsoft schrieb, dass man mit der folgenden Zeile als "xlsx" die Kopie ablegen könnte:
Code:
Me.Application.ActiveWorkbook.SaveCopyAs ("C:\Excel\Forumsarbeiten\KopieTest.xlsx")
Klasse ... kann man auch, aber öffnen kann man die Datei nicht mehr.

Da ich denke, dass dieses Thema für andere auch interessant werden wird suche ich weiterhin nach einer Lösung für das Problem und stelle hier die Frage.

Nehmen wir an ich habe eine Datei in der ich arbeite, welche Makros enthält. Möchte eine Kopie als "xlsx" speichern (die hat somit keine Makros mehr), was habe ich für Alternativen wenn savecopyas nicht mehr funktioniert?
Nutze ich die Saveas Methode kann ich natürlich eine Datei unter einem anderen Namen speichern. Das hat aber doch zur Folge, dass die Datei in der ich arbeite ohne zu speichern geschlossen wird.

Gibt es in Excel nur noch die Möglichkeit über diesen Umweg?

-speichere Hauptdatei (xlsm)
-speichere Kopie (xlsx)
-schließe Kopie
-öffne Hauptdatei

Da muss es doch eine Alternative geben, oder? Wäre nett wenn mich da mal jemand aufklären würde.

Gruß
Marcus
Hallo,

ich habe in dem Beitrag den du vermutlich meinst
http://www.clever-excel-forum.de/Thread-...-nur-Werte
folgenden Code gepostet:

Code:
Sub Speichern()
'Quelle: Herber
   Dim wks As Worksheet
   Dim sFile As String
   Application.ScreenUpdating = False
   'sFile = Application.DefaultFilePath & "\test.xls"
   sFile = "C:\Test\" & "test.xls"
   For Each wks In Worksheets
      With wks.UsedRange
         .Value = .Value
      End With
    Next wks
    ActiveWorkbook.SaveAs sFile
    Application.ScreenUpdating = True
End Sub

Wenn ich die Zeile

ActiveWorkbook.SaveAs sFile

so ergänze

ActiveWorkbook.SaveAs sFile, FileFormat:=xlOpenXMLWorkbook

dann funktioniert das Speichern bei mir.
Hallo Peter,

klasse und für diese kleine Ergänzung sitze ich jetzt so lange an dem Code? Ich sollte mich echt schämen :20:
Wenn man jetzt noch die Displayalerts abschaltet wird die alte Datei auch einfach überschrieben.


Code:
Sub Speichern()
'Quelle: Herber
    Dim wks As Worksheet
    Dim sFile As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    'sFile = Application.DefaultFilePath & "\test.xls"
    sFile = "C:\Test\" & "test.xlsx"
    For Each wks In Worksheets
       With wks.UsedRange
          .Value = .Value
       End With
     Next wks
     ActiveWorkbook.SaveAs sFile, FileFormat:=xlOpenXMLWorkbook
     Application.DisplayAlerts = True
     Application.ScreenUpdating = True
End Sub

Danke und Gruß
Marcus
Hallo Marcus,

das Thema hat Glausius beim Forumstreffen angesprochen. Hier mal noch ein paar Informationen:

50 = xlExcel12 ( mit oder ohne macro's - "binäre" Exceldatei, in 2007-2013 als xlsb)
51 = xlOpenXMLWorkbook (ohne macro's, in 2007-2013 als xlsx)
52 = xlOpenXMLWorkbookMacroEnabled (mit oder ohne macro's, in 2007-2013 als xlsm)
56 = xlExcel8 (97-2003 Format, in 2007-2013 als xls)

Man kann die Nummer oder den Ausdruck verwenden. Beim MAC muss man wohl 1 dazuzählen, daher sind die Ausdrücke ggf. besser für eine Funktion auf verschiedenen Plattformen.
Hi,

ich finde das am besten und einfachsten:
(11.10.2014, 07:40)schauan schrieb: [ -> ]50 = xlExcel12 ( mit oder ohne macro's - "binäre" Exceldatei, in 2007-2013 als xlsb)

standardmäßig so eingestellt, ich muß nicht nachdenken beim abspeichern und ich verbaue mir auch nichts.

Das hat mich schon seit Todtnau fasziniert.