Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
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

Laufzeitfehler 70: Geht es besser ihn abzufangen?

Laufzeitfehler 70: Geht es besser ihn abzufangen?
Holger,
Guten Morgen liebes Forum,
ich habe unten stehendes Makro. Dieses erstellt automatisch ein Backup der Datei, zippt dieses und löscht die Kopie dann wieder weg. Genau hier kommt ein Laufzeitfehler 70. Anscheinend ist das Makro zu schnell oder Excel löst den Zugriff von der Datei zu langsam, jedenfalls kommt bei der Zeile mit KILL ... ein Laufzeitfehler. Ich habe nun einfach eine Application Wait eingebaut von einer Sekunde und so läft das Makro.
Für mich ist das jedoch etwas unbefriedigend. Erstens, was wenn es doc mal länger als eine Sekunde dauert. Zweitens ist es nicht sauber gelöst.
Mein Anspruch wäre, die Freigabe des Files vor dem Kill Befehl zu erzwingen, um so das Problem zu lösen.
Hat jemand hierzu eine Idee oder einen Code?
Option Explicit
Option Private Module
Const BDir = "Backup Files"
Sub GenerateBackUp()
Dim wbMaster As Workbook
Dim strBackUpPath As String, strBackUpFile As String, strSysInfo As String, _
strRARName As String
Set wbMaster = ThisWorkbook
ChDrive wbMaster.Path
ChDir wbMaster.Path
If IsDiskFolder(BDir) = False Then
MkDir BDir
End If
strRARName = Format(Date, "DDDD") & " " & Date
strBackUpFile = Left(wbMaster.Name, InStr(1, wbMaster.Name, ".") - 1) & _
" " & strRARName & _
Mid(wbMaster.Name, InStr(1, wbMaster.Name, "."))
strBackUpPath = wbMaster.Path & "\" & BDir & "\" & _
strBackUpFile
If IsDiskFolder(strBackUpPath) = True Then Kill strBackUpPath
ActiveWorkbook.SaveCopyAs Filename:=strBackUpPath
If CreateRAR(Chr(34) & strBackUpFile & Chr(34), "RAR", wbMaster.Path & "\" & BDir, Date & ". _
_
rar") = True Then
Application.Wait (Now + TimeValue("0:00:01"))
Kill strBackUpPath
Else
MsgBox "Fehler beim Zippen des folgenden Files " & Chr(10) & _
strBackUpPath & Chr(10) & _
", bitte prüfen!", vbCritical
End If
Set wbMaster = Nothing
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Laufzeitfehler 70: Geht es besser ihn abzufangen?
18.02.2011 12:54:59
ransi
HAllo
ICh kann mir das alles nicht nachbauen, aber schau mal hier:
Theoretisch (weil ungetestet) müsste das laufen.
On Error Resume Next
Do
    Err.Clear
    'Err.Raise 70
    Kill deineDatei
Loop Until Err = 0
On Error GoTo 0

ransi
Anzeige
Wäre genial wenn ...
18.02.2011 13:43:26
Holger,
Hi Ransi,
Es klappt!
Aber falls es keinen Error gibt (was auch passiert, keine Ahnung warum Excel manchmal die Datei sofort freigibt und dann wieder einen Bruchteil später), wie frage ich das ab?
Kann ich nicht abfragen ob es überhaupt einen Error gibt?
AW: Wäre genial wenn ...
18.02.2011 14:07:38
ransi
HAllo
Wenn es keinen Error gibt ist doch Err=0
Dann wird doch auch gekillt ?!?!?
Die Prüfung kannst du dir dann schenken.
Aber egal.
Eine Prüfung könnte so aussehen:
On Error Resume Next
Kill deineDatei
If Err <> 0 Then
    Do
        Err.Clear
        'Err.Raise 70
        Kill deineDatei
    Loop Until Err = 0
End If
On Error GoTo 0

Wenn du prüfen willst ob die Datei noch offen ist, kannst du auch sowas versuchen:
http://www.online-excel.de/excel/singsel_vba.php?f=54
ransi
Anzeige
Moooooment ;)
18.02.2011 14:32:58
Holger,
Hi ransi,
ok, um das zu verstehen. Egal, ob error oder nicht, die Zeile KILL wird immer aufgerufen so wie ich es programmiert habe:
    If CreateRAR(Chr(34) & strBackUpFile & Chr(34), "RAR", wbMaster.Path & "\" & BDir, Date & ". _
rar") = True Then
On Error Resume Next
Do
Err.Clear                                   'Err.Raise 70
Kill strBackUpPath
Loop Until Err = 0
On Error GoTo 0
Else
MsgBox "Fehler beim Zippen des folgenden Files " & Chr(10) & _
strBackUpPath & Chr(10) & _
", bitte prüfen!", vbCritical
End If

Anzeige
AW: Moooooment ;)
18.02.2011 14:48:47
ransi
HAllo
Egal, ob error oder nicht, die Zeile KILL wird immer aufgerufen
Jo, genau das ist ja der Sinn der Übung. ;-)
Wenn die Datei gekillt werden kann wird gekillt, und dann raus der Loop.
Wenn nicht läuft Kill in einen Fehler. (70)
Der wird vor den näxten Kill-Versuch aber wieder gelöscht um zu sehen ob der Kill erfolgreich war.
ransi
Genial! Danke Ransi!" k.t.
18.02.2011 14:49:41
Holger,

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige