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

Bei Fehler Aktion

Bei Fehler Aktion
17.12.2020 15:02:01
Steve
Moin Leute,
ich stehe etwas auf dem Schlauch.
Ich hab ein Makro erstellt mit dem ich Dateien umbennenen kann. Klappt auch.
Aber natürlich nur wenn die Datei nicht geöffnet ist. Eigentlich wollte ich in das Makro einbauen, dass diese Datei (KEINE EXCEL - meistens PDF aber nicht immer) einfach geschlossen wird und dachte mir das so:
Pfad/Datei.Close
Hat leider nicht funktioniert. Hab ich mir wohl zu einfach gemacht.
Dann dachte ich mir, ich kann dafür sorgen, dass das Makro statt der Debug Fehlermeldung eine andere Meldung ausgibt und mir sagt "Kann Datei nicht umbenennen - vielleicht noch geöffnet?" und mir ein OKAY button oder so zur Verfügung stellt. Dann kann ich die Datei bequem suchen, schließen und das Makro dannach weiterlaufen lassen.
Aber irgendwie bekomme ich das nicht so ganz hin.
Kann mir dazu jemand Bitte weiterhelfen?
'Datei wird umbenannt
NPfad = Left(APfad, InStrRev(APfad, "\") - 0) & NDatNam
On Error GoTo Fehler
WEITER:
Name APfad As NPfad

'Hyperlink Überschrift wird angepasst
ActiveSheet.Hyperlinks.Add Anchor:=Cells(a, 3), Address:=NPfad, TextToDisplay:=NDatNam
'Spalte Pfad wird umgeschrieben
ActiveSheet.Cells(a, b + 7) = NPfad
Fehler:
If MsgBox("Datei noch geöffnet?", vbOKCancel, "Sicherheitsabfrage") = vbCancel Then
Exit Sub
Else
Resume WEITER
End If

Range("N_Vorgang").Clear
End Sub
Ich schaffe zwar diese Fehlermeldung einzubauen, aber nie klappt es richtig. Eigentlich sollte der nur starten wenn ein Fehler auftritt, aber nun startet Fehler immer und lässt sich auch nur mit Abbrechen beenden. Zunächst hier mal meinen Code. Das Dick-geschriebene ist das was die Fehlerbehandlung einläutet.
https://www.herber.de/bbs/user/142402.zip
und hier meine Datei. Das fragliche Makro heisst: Aenderung
Vielen Dank und viele Grüße
Steve

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Fehler Aktion
17.12.2020 15:21:10
Rudi
Hallo,
damit kannst du prüfen, ob die Datei geöffnet ist:
Function IsFileOpen(strFullPathFileName As String) As Boolean
'// VBA version to check if File is Open
'// We can use this for ANY FILE not just Excel!
'// Ivan F Moala
'// http://www.xcelfiles.com
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = FreeFile
Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function

Schema:
if not isfileopen(apfad) then
name apfad as npfad
else
Msgbox"Datei "&apfad &" ist geöffnet!"
end if

Gruß
Rudi
Anzeige
AW: Bei Fehler Aktion
18.12.2020 14:19:46
Steve
Hallo Rudi,
irgendwie habe ich mich mit deiner Lösung schwer getan. Stand wohl etwas auf dem Schlauch. Aber ich habe es hinbekommen. Ich danke dir dafür.
Ich hoffe ich habe das richtig gesehen, dass ich die Funktion noch abändern musste. Das habe ich da jedenfalls gemacht. Aber eine Frage habe ich noch. In der Funktion steht das die Datei auch geschlossen werden soll. Wird sie aber nicht.
Hab ich das falsch verstanden oder was falsch umgesetzt?
Sub Anfang() - nur eingefügt, damit der Code besser abgesetzt wird.
''Pruefung ob Datei evtl noch geoeffnet
If Not IsFileOpen(APfad) Then
'Datei wird umbenannt
Name APfad As NPfad
'Hyperlink UEberschrift wird angepasst
ActiveSheet.Hyperlinks.Add Anchor:=Cells(a, 3), Address:=NPfad, TextToDisplay:= _
NDatNam
'Spalte Pfad wird umgeschrieben
ActiveSheet.Cells(a, b + 7) = NPfad
Else
MsgBox "Datei " & APfad & " ist geöffnet!"
End If
Range("N_Vorgang").Clear
End Sub

Function IsFileOpen(APfad As String) As Boolean
'// VBA version to check if File is Open
'// We can use this for ANY FILE not just Excel!
'// Ivan F Moala
'// http://www.xcelfiles.com
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = APfad
Open APfad For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function

Vielen Dank und Grüße
Steve
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige