Während des Transfers keine Aktion

daywalkertp

Erfahrenes Mitglied
Wie programmiere ich folgendes:

Ich will mit der Datei "X.dat" was machen.
Datei "X.dat" muss aus Ordnder "Test" geladen werden. Das ganze ist aufgebaut in einem Scheduler. Er durchsucht also immer wieder im Ordner "Test" ob da die Datei "X.dat" vorhanden ist wenn ja dann dies:

Solange ich diese Datei "X.dat" in den "Test" Ordner kopiere, darf mein Programm den nachfolgenden Code nicht gleich ausführen, sondern muss warten bis die Datei erst vollständig kopiert wurde.

Ich dachte da vielleicht irgedwie an soetwas:
z.B
Wenn Datei nicht geöffnet werden kann dann überspring Aktion123
...aber wie ist der Code hierfür?
ich hab das zwar mal so gemacht:
Open "C:\out\" & dateiname For Input As #1
aber falls er noch am kopieren ist und die Datei nicht geöffnet werden kann, dann bringt er mir immer den "Kann nicht zugegriffen werden"-Fehler. Aber anstatt mir diesen Fehler zu bringen sollte er die Aktion einfach beenden.


Please Help!
Danke Im Vorraus
ist ein bisschen schwer zu verstehen.. aber ich hoffe Ihr habt das verstanden :D
 
Zeig mal den Code, den Du schon hast. Ich würde erstmal sagen, mit einer Schleife lässt sich das Problem ziemlich schnell lösen. Und was meinst Du genau mit "on error goto funzt nicht"?
 
'------------------------- Delete Local ---------------
Private Sub delLocal()
Dim anfang As Integer
Dim dateiname As String
Timer1.Enabled = False
For anfang = 2 To lv.ListItems.Count
dateiname = lv.ListItems(anfang).Text
If Dir("C:\out\" & dateiname, vbNormal) <> "" Then
Kill "C:\out\" & dateiname
End If
Next
Timer1.Enabled = True

End Sub
 
Wie man überprüfen kann, ob ein anderes Programm gerade die Datei zum Schreiben geöffnet hat, weiss ich nicht. Da gibt's aber bestimmt irgendeine API-Funktion für.
Am einfachsten ist das wie gesagt mit einem entsprechenden Fehlerbehandler:
Code:
On Error GoTo fbehandler123

' Erstmal versuchen, die Datei zu löschen

Exit Sub

fbehandler123:
    If Err.Number = 70 Then
        MsgBox "Datei konnte nicht gelöscht werden, weil Sie gerade von einem anderen Programm verwendet wird.", vbExclamation, "Achtung"
    End If
    Resume Next
Nachtrag: Du könntest aber versuchen, die Datei einfach zu öffnen. Wenn das nicht geht, dann wird sie (wahrscheinlich) gerade von einem anderen Programm verwendet. Und darauf kannst Du dann eben entsprechend reagieren.
 

Neue Beiträge

Zurück