Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Speichern nicht möglich .Close

Wenn Speichern nicht möglich .Close
04.10.2018 16:03:59
Domi
Hi Forum,
An sich klingt mein Problem nicht schwer aber ich hänge da trotzdem.
Ich speicher eine Datei in einem Netzwerkpfad ab. Wenn man auf den Pfad kein Zugriff hat, soll sich die Datei "ungespeichert" schließen.
Ich wollte das mit einer "On error GoTo"-Lösung angehen. Das klappt leider nicht. Ich bekomme den Laufzeitfehler.
Kann mir jemand helfen:
  • Private Sub Workbook_AfterSave(ByVal Success As Boolean)
    Call aus
    On Error GoTo raus
    Const strNetzPfad As String = "Hier steht mein Pfad"  'Pfad für Kopie!!!
    Dim strTempName As String, strCopyName As String, strName As String, lngFormat As Long
    Dim wkbCopy As Workbook
    Dim I As Integer
    If Success = True Then
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    lngFormat = Me.FileFormat
    strName = Me.Name
    Application.DisplayAlerts = False
    Sheets(4).Delete
    Sheets(3).Delete
    Sheets(2).Delete
    For I = 24 To 5 Step -1
    Worksheets(1).Columns(I).Delete
    Next
    Application.DisplayAlerts = True
    strName = Left(strName, Len(strName) - 4)
    strCopyName = strNetzPfad & strName & "xlsx"
    strTempName = strNetzPfad & "Temp" & strName & "xlsm"
    Me.SaveCopyAs strTempName
    Set wkbCopy = Workbooks.Open(strTempName)
    strTempName = strNetzPfad & "Temp" & strName & "xlsx"
    Application.DisplayAlerts = False
    wkbCopy.SaveAs Filename:=strTempName, FileFormat:=51
    Application.DisplayAlerts = True
    wkbCopy.Close SaveChanges:=False
    If Dir(strCopyName)  "" Then Kill strCopyName
    Name strTempName As strCopyName
    strTempName = strNetzPfad & "Temp" & strName & "xlsm"
    VBA.Kill strTempName
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    ActiveWorkbook.Close SaveChanges:=False
    End If
    Call an
    Exit Sub
    raus:
    Call an
    Workbooks("Warranty problem list 2018.xlsm").Close SaveChanges:=False
    End Sub
    


  • 5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Wenn Speichern nicht möglich .Close
    04.10.2018 17:15:00
    onur
    "Ich bekomme den Laufzeitfehler." - WELCHEN denn und in WELCHER ZEILE?
    Den Code von "an" solltest du auch noch posten.
    ThisWorkbook.Saved = True
    04.10.2018 17:21:56
    Matthias
    Wieso nicht Workbook_BeforeSave
    Bei Deiner Sprungmarke raus:
     ThisWorkbook.Saved = True
    ThisWorkbook.Close
    

    Was in der Sub an() steht weiß keiner außer Du!
    Gruß Matthias
    AW: ThisWorkbook.Saved = True
    05.10.2018 07:48:01
    Domi
    Guten Morgen :) sorry dass ich erst jetzt antworte.
    zur 1. Frage: (Call an / aus)
    Die Calls an und aus deaktivieren/aktivieren den Schreibschutz der Datei. (hätte ich eventuell erwähnen sollen (: ). Die funktionieren auch, da ich die bereits vor der Änderung verwendet habe.
    zur 2. Frage: (BeforeSave)
    Mit dem AfterSave speichere ich eine Kopie der Originaldatei in dem "strNetzPfad" ohne Makros und mit einigen gelöschten Blättern/Spalten. Das soll natürlich der Originaldatei nicht wiederfahren.
    zu 3. Frage: (wann Laufzeitfehler?)
    Leider gibt mir das Programm nur den Hinweis: 9: Laufzeitfehler
    Vielleicht noch als Hinweis:
    Ich habe Schreibrecht auf den Zielpfad und bei mir funktioniert das speichern einwandfrei. Wenn jetzt jemand die Datei speichert, der keinen Zugriff auf den Zielpfad hat, dann bricht das Programm nach den Zeilen:
    
    Sheets(4).Delete
    Sheets(3).Delete
    Sheets(2).Delete
    For I = 24 To 5 Step -1
    Worksheets(1).Columns(I).Delete
    Next
    

    irgendwo ab. Nun ist die Originaldatei "beschädigt" und wenn die Person dann speichert ist die ganze Arbeit futsch.
    Das ganze wollte ich umgehen indem ich sage: Sobald ein Fehler in dem Programm auftritt, brich ab und schließe die Originaldatei ohne zu speichern.
    OnErrorGoTo raus
    

    und genau das funktioniert leider nicht.
    Falls immer noch Informationen fehlen werde ich natürlich versuchen diese detailliert zu beschreiben.
    Danke euch!
    Anzeige
    funktioniert doch mit ThisWorkbook.Saved = True
    05.10.2018 12:01:42
    Matthias
    oT

    302 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige