Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Nach fehler Makro neustarten

VBA - Nach fehler Makro neustarten
Daniel
Hallo Forum,
ich habe hier eine Datei mit einem Makro, welches mir werte aus dateien ausliest und in dateien schreibt. (Danke Beverly/Karin für die kompetente Hilfe)
Das Ganze funktioniert soweit gut, nur das auch noch ein weiteres Batch Programm im selben Intervallen auf die Dateien zugriff hat und somit (wie der Zufall kommt) für eine Sekunde die datei von der Batch (Netcat) geöffnet ist und das Makro dann keinen zugriff hat - Die quittung ist eine Fehlermeldung (irgendwas mit einlesen hinter dateiende) und der Abbruch des Makros.
Ich würde jetzt gerne, dass das Makro bei diesem Fehler wieder von vorne anfängt und evtl. die Fehlermeldung vertuscht.
ist das möglich?
vielen Dank
mfg
Daniel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA - Nach fehler Makro neustarten
02.09.2009 16:16:02
Alfons
Hallo Daniel,
ruf das Makro in der Fehlerbehandlung nochmal auf:
Private Sub VonVorn()
Dim i As Integer, Antwort As Integer
On Error GoTo Hell
i = 10 / 0
Exit Sub
Hell:
'MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine & _
"Beschreibung: " & Err.Description, vbCritical, "Fehler"
Antwort = MsgBox("Makro neu starten?", vbYesNoCancel, "")
If Antwort = 6 Then
Call VonVorn
End If
End Sub
Gruß
Alfons
http://vba1.de
AW: VBA - Nach fehler Makro neustarten
02.09.2009 17:03:24
fcs
Hallo Daniel,
in diese Fehlerbehandlung muss du etwas mehr investieren. Sie ist nicht trivial, denn der Fehler schlägt evtl. auf die Dateiverwaltung in Excel durch. Der Fehler tritt wie du schon erkannt hast auf wenn Excel auf die durch das andere Programm geöffnete Datei zugreifen will.
Die Fehlerbehandlung sollte alle bereits geöffneten Datenkanäle schließen und dann zur Hauptprozedur zurückkehren. Dann wird 10 Sekunden Später das Zeitmakro wieder ausgeführt. Mangels Testmasse alles ohne Gewähr.
Evtl. macht es auch Sinn einen FehlerMerker in eine Variable zu schreiben und danach den Start des Zeitmakros etwas zu versetzen, damit die beiden Programm nicht gleichzeitig auf die Datei(en) zugreifen.
Gruß
Franz
Sub Ausfuehren()
Dim strAusgang As String
On Error GoTo Fehler
Dim Fso
Dim fsoDatei
Open "C:\Test\Test.txt" For Input As #1
Input #1, strAusgang
Close
With Worksheets("Tabelle1")
.Range("B3") = CDbl(strAusgang)
Set Fso = CreateObject("Scripting.FileSystemObject")
Set fsoDatei = Fso.OpenTextFile("C:\Test\Text2.txt", 2, True)
fsoDatei.Write .Range("D17")
fsoDatei.Close
End With
Fehler:
With Err
If .Number  0 Then
If .Number = 9999 Then 'diese Fehler-Nummer nach dem 1. Auftreten des Fehlers anpassen
.Clear
Close
If Not fsoDatei Is Nothing Then fsoDatei.Close
Else
MsgBox "Fehler-Nr. " & .Number & vbLf & .Description & vbLf & .HelpContext
End If
End With
Set Fso = Nothing
Set fsoDatei = Nothing
End Sub

Anzeige
AW: VBA - Nach fehler Makro neustarten
03.09.2009 10:33:38
Daniel
Danke für eure Antworten,
es ist anscheinend deutlich komplizierter, da das Programm bzw. die Tatsache, welche das Problem verursacht eh mehr schlecht als recht funktioniert...ich denke ich muss mir einen anderen Weg suchen.
Trotzdem Danke für eure Antworten - klasse Support.
mfG
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige