Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Prüfen, ob eine Datei aus beliebiger Anwendung bereits geöffnet is

470 views
Skip to first unread message

Marion Hildebrandt

unread,
Feb 1, 2007, 3:12:00 AM2/1/07
to
Moin, Moin,

Ich nutze in meiner Datenbank eine Funktion zum prüfen, ob ein Formular etc
geöffnet ist. Der VBA Code dafür ist recht simpel, da die Eigenschaft
IsLoaded für Access Objekte zur Verfügung steht.
Jetzt möchte ich aber prüfen, ob eine Datei aus einer beliebigen Anwendung
(pdf, tif, doc …) bereits geöffnet ist.
Meine Prozedur soll folgende Schritte durchlaufen:
1.Prüfen, ob Datei geöffnet ist (fehlt noch: Funktion „IsFileOpen“)
2.Prüfen, ob Dateipfad überhaupt existiert (Ist fertig: Funktion „PfadExist“)
3. wenn ja, letztes Änderungsdatum ermitteln und dieses mit weiteren Infos
in Tabelle „Datenaktualisierung“ ablegen für spätern Abgleich der
Sicherungskopie auf meiner Mobilen Festplatte.(Ist fertig)
4.Öffnen der Datei (Ist fertig)
So sieht der VBA-Code bis jetzt aus:

Private Sub Dateipfad_Click()
….
Dim objFile As Object
Dim objFilename As Object
Dim Db As DAO.Database
Dim stDateipfad As String
Dim stDateiModialt As String
Dim sqlDateiakt As String
If IsFileOpen(stDateipfad) = False Then
If PfadExist(stDateipfad) = True Then
Antwort = MsgBox("Ich öffne den elektronischen Ordner", 1, "
Kloogschieter seegt:")
If Antwort = vbOK Then
Set objFile = CreateObject("Scripting.FileSystemObject")
Set objFilename = objFile.GetFile(stDateipfad)
stDateiModialt = objFilename.DateLastModified
Set Db = CurrentDb
sqlDateiakt = "INSERT INTO Datenaktualisierung (DADatenbank,
DAOrdner, DADateipfad, DADateiModialt) VALUES ('mhildebrandt', 'Ordner', '" &
stDateipfad & "', '" & stDateiModialt & "');"
Db.Execute sqlDateiakt, dbFailOnError
Application.FollowHyperlink stDateipfad
End If
End If
End If
…..
End Sub

Wer kann Tipps für die Entwicklung meiner Funktion „IsFileOpen“ geben?
Viele Grüße aus Hamburg!
Marion

Gunter Avenius

unread,
Feb 1, 2007, 3:22:41 AM2/1/07
to
Hallo Marion,

Marion Hildebrandt schrieb folgendes:


> Ich nutze in meiner Datenbank eine Funktion zum prüfen, ob ein
> Formular etc geöffnet ist. Der VBA Code dafür ist recht simpel, da
> die Eigenschaft IsLoaded für Access Objekte zur Verfügung steht.
> Jetzt möchte ich aber prüfen, ob eine Datei aus einer beliebigen
> Anwendung (pdf, tif, doc …) bereits geöffnet ist.
> Meine Prozedur soll folgende Schritte durchlaufen:
> 1.Prüfen, ob Datei geöffnet ist (fehlt noch: Funktion „IsFileOpen“)
> 2.Prüfen, ob Dateipfad überhaupt existiert (Ist fertig: Funktion
> „PfadExist“) 3. wenn ja, letztes Änderungsdatum ermitteln und
> dieses mit weiteren Infos in Tabelle „Datenaktualisierung“ ablegen
> für spätern Abgleich der Sicherungskopie auf meiner Mobilen
> Festplatte.(Ist fertig) 4.Öffnen der Datei (Ist fertig)
> So sieht der VBA-Code bis jetzt aus:

[...]


> Wer kann Tipps für die Entwicklung meiner Funktion „IsFileOpen“
> geben? Viele Grüße aus Hamburg!
> Marion

schau Dir mal die Function "File_Lock" - Modul "mdlSonstigesJaNein" aus der
KnowHow (www.freeaccess.de) an.

--
Gruß
Gunter
_________________________________________________
Access - FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de

Marion Hildebrandt

unread,
Feb 1, 2007, 3:40:00 AM2/1/07
to
Hallo Gunter,
ich glaub das war ein toller Hinweis! Da sind noch mehr interessante Sachen
drin!
Vielen Dank
Gruß Marion

"Gunter Avenius" schrieb:

Anton Huber

unread,
Feb 1, 2007, 4:20:30 AM2/1/07
to
Marion Hildebrandt threw this exception:

Hallo Marion!

>Jetzt möchte ich aber prüfen, ob eine Datei aus einer beliebigen Anwendung
>(pdf, tif, doc …) bereits geöffnet ist.

Dabei gibt es ein prinzipbedingtes Problem. Nicht alle
Programme halten die Dateien offen welche Sie einlesen.
Möglicherweise ist es für Deine Zwecke auch egal, wollte
es nur gesagt haben.
Z.B.: ein jgp/tiff/etc. mittels Photoshop geöffnet, wird von
Photoshop nach dem einlesen sofort wieder geschlossen.
Hier kann man also nie feststellen ob die Datei geöffnet
ist, da diese ja nicht geöffnet ist und dennoch ist sie 'offen' ;-),
der Benutzer braucht ja nur kurz auf 'Speichern' drücken ...
(-> weiters Editor, ...)


>Meine Prozedur soll folgende Schritte durchlaufen:
>1.Prüfen, ob Datei geöffnet ist (fehlt noch: Funktion „IsFileOpen“)

Der sicherste Weg ist die Datei zu löschen, schlägt es
fehl war diese geöffnet, klappte es wurde diese von
keine Prozess verwendet ;-).

Mittels vba fällt mir

Open Path For Input Lock Read Write As #1

ein, geht dies in die Hose ist die Datei geöffnet. Dieses Bspl.
geht aber davon aus das der andere Prozess die Datei für
Schreibzugriffe, Lesezugriffe oder exklusiv geöffnet hat. Es gibt
da aber auch noch eine drittes 'share' unter NT und zwar
das DELETE-share, dies würde hier nicht berücksichtig werden.

Gruss
Anton

--
Aber wieso? Gestern ging's doch noch!

Anton Huber

unread,
Feb 1, 2007, 6:36:57 AM2/1/07
to
Olaf O. threw this exception:

Hallo Olaf!

>Hilfreich könnte Dir das FileSystemObject sein.

Ich denke das weis Marion bereits ;-).

0 new messages