2017-11-29 1 views
0

Wie kann ich das Format von xlsm zu xlsx ändern. Ich brauche ein Skript, das eine Kopie der Datei xlsm mit der Erweiterung xlsx speichert, aber den Benutzer nicht zur Eingabe des Dateinamens auffordert, der ursprüngliche Name muss beibehalten werden, das einzige, was der Benutzer tun muss, ist auszuwählen, wo er gespeichert werden soll Datei.Wie konvertiert man von xlsm zu xlsx mit dem gleichen Namen

+0

was sind die genauen Probleme, die Sie haben werden? –

+0

mein Code fordert zur Eingabe des Namens der neuen Datei auf, ich muss sicherstellen, dass automatisch der Name der ursprünglichen xlsm-Datei eingegeben wird. Der Benutzer sollte die Datei nicht umbenennen können. –

+0

siehe meine Antwort unter –

Antwort

1

Ich denke, Sie möchten nur eine .xlxs Kopie hinzufügen nicht über Ihre Makro-fähigen Arbeitsmappe schreiben. Versuchen Sie die folgende Codezeile, es sollte funktionieren, legen Sie Ihren Arbeitsmappennamen in "Arbeitsmappenname hier eingeben", die Datei, die geöffnet bleibt, wird die XLSX-Datei sein.

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & "Put Workbook Name here" & ".xlsx", FileFormat:=51, Password:="", WriteResPassword:="", _ 
ReadOnlyRecommended:=False, CreateBackup:=False 

Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
+0

ja das funktioniert super! es hat die Kopie erstellt, die ich brauchte, die einzige Sache ist, dass es automatisch im selben Ordner wie das Original speichert. wie kann ich es ändern, so fordert mich zu wählen, wo möchte ich es speichern? ist das möglich –

+0

Ersetzen Sie "Activeworkbook.Path" mit "C: \ Folder \ SubFolder \" mit den Zitaten. Ersetzen Sie die Namen der Laufwerkbuchstaben, Ordner und Unterordner durch die Position, an der Sie die Datei speichern möchten. – GMalc

1

Sie benötigen FolderPicker Funktion zu erstellen:

Sub changeext() 
Dim objFolder As Object, objFSO As Object 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder(ChooseFolder) 

ThisWorkbook.SaveCopyAs Filename:=objFolder & "\" & Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) & "xlsx" 

End Sub 

Function ChooseFolder() As String 
Dim fldr As FileDialog 
Dim sItem As String 

Set fldr = Application.FileDialog(msoFileDialogFolderPicker) 
With fldr 
    .Title = "Select a Folder to save down the copy of this workbook" 
    .AllowMultiSelect = False 
    .InitialFileName = strPath 
    If .Show <> -1 Then GoTo NextCode 
    sItem = .SelectedItems(1) 
End With 

NextCode: 
    ChooseFolder = sItem 
    Set fldr = Nothing 
End Function 
+0

Danke, dieser Code ist großartig! es tut genau das, was ich brauche, aber nicht sicher, warum ich eine Fehlermeldung bekomme, wenn ich versuche, die neue Datei zu öffnen. es heißt "Excel kann die Datei" filename.xlsx "nicht öffnen, da das Dateiformat oder die Dateierweiterung nicht gültig ist. Überprüfen Sie, ob die Datei nicht beschädigt ist und ob die Dateierweiterung mit dem Format der Datei übereinstimmt." Ich bin mir nicht sicher, wie dieses Problem gelöst werden kann. –

+0

Weil a. wird benötigt, bevor "xlsx" es in ".xlsx" ändert – GMalc

Verwandte Themen