Thread Excel (Win32::OLE) Datei bereits geoeffnet (11 answers)
Opened by fish12345 at 2009-07-29 12:24

murphy
 2009-07-31 11:11
#123762 #123762
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2009-07-31T05:35:10 fish12345
[...]
Code (perl): (dl )
sysopen(FH, $file, O_WRONLY|O_EXCL) or die $!;


Ist die Datei bereits geoeffnet hat das Skript keine Rechte die Datei exklusiv zu oeffnen, daher erscheint dann der Fehler "Permission denied". Ist die Datei nicht in Benutzung kann ich ganz normal mit dem FileHandle arbeiten bzw. ihn wieder schließen um dann das Sheet zu bearbeiten.
[...]

Dieses Vorgehen funktioniert aber auch nur mit Glück und Zufall korrekt: Es kann sein, dass just in dem Moment wo Du die mit sysopen geöffnete Datei wieder geschlossen hast und bevor Du dieselbe Datei mit Excel öffnen konntest, ein entfernter Rechner oder einfach ein anderer Prozess auf dem gleichen Rechner ebenfalls die Datei öffnet. Danach wird Dein Programm trotzdem munter an Excel den Befehl geben, die Datei noch einmal zu öffnen, was vermutlich auch funktioniert. Im Endeffekt bringt der Ansatz mit dem temporären exklusiven Lock also überhaupt nichts.

Soweit ich das beurteilen kann, gibt es überhaupt keine zuverlässige Methode um auf einem Netzwerkdateisystem exklusiven Zugriff auf eine Datei sicherzustellen, es sei denn, alle Prozesse, die potentiell am Öffnen der Datei interessiert sind, kooperieren und benutzen irgendwelche Lockfiles.
When C++ is your hammer, every problem looks like your thumb.

View full thread Excel (Win32::OLE) Datei bereits geoeffnet