2016-11-30 4 views
0

Ich bekomme eine Runtime error 1004 document not saved mit VBA, wenn ich eine Excel-Arbeitsmappe in meinem Ordner auf dem Desktop speichern möchte. Hier sind die Details meines Codes:Laufzeitfehler 1004 Dokument nicht mit Vba gespeichert Excel 2016

+0

Können Sie mir bitte helfen, wie ich bekomme Fehler in diesem Teil des Codes ActiveWorkbook.SaveAs Dateiname: = fName, FileFormat: = 51 – Tabraiz

+0

haben Sie eine der folgenden Lösungen getestet? jede Rückmeldung wäre nett ... –

Antwort

0

Ich denke, dass Sie ein "Ende Wenn" am unteren Rand Ihres Codes fehlt. Der 'If fName = False Then ...' Teil. Versuchen Sie, die folgenden

Private Sub Save_Click() 

'Popup the Window "Save As" 

Application.DisplayAlerts = False 


MsgBox "Do not change the default file name proposed on the next step please !" 

Dim fName As Variant 

Dim DName As String ' Variable storing name of excel workbook which has to be saved 

DName = UserForm.CustomerApplication.Value & " - " & UserForm.L2GType.Value 

& " - " & UserForm.Title.Value & " - " & UserForm.Country.Value & "(" & 

Year(Date) & ")" 

fName = Application.GetSaveAsFilename(InitialFileName:=DName, _ 

FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Save As") 

If fName = False Then 

Exit Sub 

End If 

ActiveWorkbook.SaveAs filename:=fName, FileFormat:=51 

ActiveWorkbook.Close 

End Sub 
+0

wilson88 Können Sie bitte erklären, warum Ende sollte am Ende des Codes sein? – Tabraiz

+0

Es ist eine mehrzeilige Syntaxregel für If-Anweisungen in VBA (die hier als Ihre 'Exit Sub'-Anweisung in einer anderen Zeile gilt). Wenn es in einer Zeile wäre, müssten Sie nicht (aber ich verwende es immer sowieso, wie ich es vorziehe, wenn Anweisungen in Blöcken schreiben, wie es einfacher zu verstehen ist). Weitere Informationen verlinkt :) https://msdn.microsoft.com/en-us/library/752y8abs.aspx –

+0

Ich denke, Ihr Dokument wird nicht gespeichert, weil es denkt, dass die ActiveWorkbook.SaveAs Dateiname: = FName, FileFormat: = 51 Anweisung ist Teil des If-Blocks. So wird es das Sub verlassen, bevor das Dokument gespeichert wird ... –

0

fName ein String ist, deshalb kann man nicht vergleichen es mit False, aber mit "False".

Versuchen Sie, den letzten Abschnitt des Codes mit den folgenden Zeilen ersetzt:

fName = Application.GetSaveAsFilename(InitialFileName:=DName, _ 
     fileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Save As") 

If fName <> "False" Then 
    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveAs Filename:=fName, FileFormat:=51 
Else 
    MsgBox "No File was selected !" 
    Exit Sub 
End If 

Application.DisplayAlerts = True 

Hinweis: mit FileFormat:=51 bedeutet xlOpenXMLWorkbook, ein XLSX-Format (ohne MACROs).

jedoch, da Sie den Befehl SaveAs mit ThisWorkbook, verwenden möchten, die diesen Code enthält, erhalten Sie eine Eingabeaufforderung Bildschirm erhalten, wenn Sie es als .xslx speichern möchten fragt, was bedeutet, den gesamten Code verloren.

Sie FileFormat:=52 wählen, bedeutet xlOpenXMLWorkbookMacroEnabled, ein XLSM Format (mit MACROs).

+0

Shai Rado Ich habe meinen Code geändert, als ob Sie gesagt haben, aber immer noch nicht funktioniert denselben Fehler geben. Ich muss Excel-Arbeitsmappe speichern ohne Makro aktiviert – Tabraiz

+0

Shai Rado ich benutze Excel 2016 so ist da etwas falsch mit dem Dateiformat? – Tabraiz

+0

@Tabraiz bei welcher Zeile erhalten Sie Ihren Fehler? –

Verwandte Themen