Microsoft Excel

Herbers Excel/VBA-Archiv

SaveCopyAs erzeugt FALSE Datei bei Fehler


Betrifft: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 12:00:13

Hallo,

ich habe ein Problemchen und komme einfach nicht weiter.

Ich habe eine Datei, die mittels Commandbutton eine Kopie dieser Datei speichern soll. Das funktioniert auch soweit. Wird jedoch der Vorgang abgebrochen, dann speichert Excel immer eine Datei mit dem Namen "False" ab. Ich bekomme dieses Fehlverhalten nicht in den Griff.

Hier der Code:


Private Sub CommandButton20_Click()

Dim NeuerName As String
Dim Pfad As String
Dim Filter As String
'Application.DisplayAlerts = False
    
    NeuerName = ActiveSheet.Range("G19")
    Filter = "Excel Files (*.xlsm), *.xlsm"
    If NeuerName = "Keine Name" Then
        MsgBox "Name in G19 eingeben", vbOKOnly + vbCritical
        Exit Sub
    End If
If NeuerName = "False" Then
MsgBox "Vorgang abgebrochen", vbOKOnly + vbCritical
Else
ActiveWorkbook.SaveCopyAs Filename:=Application.GetSaveAsFilename(NeuerName, Filter,  _
FilterIndex:=2) ', FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True


End If
    

'Application.DisplayAlerts = True
End Sub

Hat jemand da ein Lösungsvorschlag?

Vielen Dank.

Gruß

  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Werner
Geschrieben am: 29.11.2018 12:04:02

Hallo Thorsten,

If NeuerName = "False" Then
MsgBox "Vorgang abgebrochen", vbOKOnly + vbCritical
Exit Sub
Else
Gruß Werner


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 12:07:08

Hallo Werner,

das habe ich ja bereits in meinem Code enthalten. Scheint aber keine Auswirkung zu haben. :(

Gruß


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Torsten
Geschrieben am: 29.11.2018 12:10:29

Nein das Exit Sub an dieser Stelle hattest du nicht in deinem geposteten Code.

Gruss Torsten


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 12:21:05

Ok, stimmt das Exit Sub fehlte. Habe ich jetzt hinzugefügt, es wird aber immer noch eine FALSE Datei ohne Endung abgespeichert.


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Werner
Geschrieben am: 29.11.2018 12:16:17

Hallo,

außerdem hat die Variable nicht den Wert "False" sondern ist ""

Public Sub CommandButton20_Click()
Dim NeuerName As String
Dim Pfad As String
Dim Filter As String

'Application.DisplayAlerts = False
    
NeuerName = ActiveSheet.Range("G19")
Filter = "Excel Files (*.xlsm), *.xlsm"

If NeuerName = "Keine Name" Then
    MsgBox "Name in G19 eingeben", vbOKOnly + vbCritical
    Exit Sub
End If
If NeuerName = "" Then
    MsgBox "Vorgang abgebrochen", vbOKOnly + vbCritical
Else
    ActiveWorkbook.SaveCopyAs Filename:=Application.GetSaveAsFilename(NeuerName, Filter, _
    FilterIndex:=2) ', FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True
End If
    
'Application.DisplayAlerts = True
End Sub
Gruß Werner


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 12:28:45

Auch wenn ich NeuerName auf "" ändere wird eine False Datei gespeichert beim Abbrechen.


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Werner
Geschrieben am: 29.11.2018 13:00:14

Hallo Thorsten,

dann ist die Zelle G19 nicht leer.

Hast du da eine Formel drin die u.U. einen Leerstring ausgibt?

Gruß Werner


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 13:12:57

Ja, in G19 ist eine Formel, die auf eine andere Zelle in der Tabelle verweist. Ich vergebe auf einem anderem Sheet nach einer Prüfung mehrerer Faktoren einen Namen. Sind alle Vorgaben eingehalten, so wird eine Name des Vorgangs erzeugt (bestehend aus DatumBezeichnungJahr). Sind nicht alle Vorgaben erfüllt, besteht der Hinweis aus "Keine Name". Das Frage ich ja ab. Der Vorgang wird auch bei nicht bestehenden Vorgaben nicht gespeichert. Nur wenn ich mit dem Button "Abbrechen" den Vorgang abbreche, kommt diese False Datei (Welche keine Endung besitzt).

So sieht es jetzt aus:

Private Sub CommandButton20_Click()

Dim NeuerName As String
Dim Pfad As String
Dim Filter As String

    
 NeuerName = ActiveSheet.Range("G19") 'Name der Exeldatei in Varibel übergeben
 Filter = "Excel Files (*.xlsm), *.xlsm"
    
 If NeuerName = "Keine Name" Then 'Prüfung der Variablen auf fehlende Bezeichnung
        MsgBox "Bezeichnung fehlt", vbOKOnly + vbCritical
        Exit Sub
 Else
     ActiveWorkbook.SaveCopyAs Filename:=Application.GetSaveAsFilename(NeuerName, Filter,  _
FilterIndex:=2) ', FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=True
    End If
    
If NeuerName = "False" Then
        MsgBox "Vorgang abgebrochen", vbOKOnly + vbCritical
        Exit Sub
End If

End Sub



  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Daniel
Geschrieben am: 29.11.2018 12:10:10

Hi

du solltest das GetSaveAs-Filename nicht direkt in die SaveAs-Funktion reinschriben.

erstmal den Speichernamen in einer Variablen sichern, nur dann kannst du prüfen, ob abgebrochen wurde oder nicht:

dim Speichername as string
Speichername = application.getsaveasfilename
If Speichername like "*.xls*" then ActiveWorkbook.savecopyas FileName:=Speichername
Gruß Daniel


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Thorsten
Geschrieben am: 29.11.2018 12:54:39

Mmmh,

das mache ich doch, oder nicht?

Ich schreibe den Neuen Name in die Variable "Neuer Name" Diese überprüfe ich erst auf die Eingabe "Keine Name". Ist kein Name vorhanden, dann kommt auch die gewünschte Meldung.

Nur wenn ich auf abbrechen klicke, dann speichert Excel eine Datei mit der Bezeichnung False (ohne eine Endung) daher frage ich ja auch noch einmal mit (If NeuerName = "False" Then)danach.


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: PeterK
Geschrieben am: 29.11.2018 13:03:59

Hallo

In deiner Version liefert

Application.GetSaveAsFilename den Wert FALSE zurück wenn abgebrochen wird.d.h

ActiveWorkbook.SaveCopyAs Filename:=FALSE

und schon hast Du Dein "komische" Datei


  

Betrifft: AW: SaveCopyAs erzeugt FALSE Datei bei Fehler
von: Daniel
Geschrieben am: 29.11.2018 13:11:30

nö machst du nicht.

wenn du das GetSaveAs-Filename direkt in SaveCopyAs einsetzt, dann wird die Datei unter dem Namen gespeichert, den dir die GetSaveAsFilename-Funktion zurück gibt.
dein NeuerName ist nur die Startbefüllung für das GetSaveAsFilename, aber für dessen Ergebnis völlig belanglos.
Wenn du Abbrechen drückst, dann gibt dir GetSaveAsFilename denn Boolschen Wert FALSE zurück.

das SaveCopyAs erwartet aber einen Textstring und wandelt das FALSE in den Text "Falsch" und verwendet diesen als Speichername.

Gruß Daniel