Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prüfen ob bestimmte Datei in Excel geöffnet ist (https://www.delphipraxis.net/204705-pruefen-ob-bestimmte-datei-excel-geoeffnet-ist.html)

oakley 20. Jun 2020 15:10

Prüfen ob bestimmte Datei in Excel geöffnet ist
 
Hallo zusammen,

wie kann überprüfen ob eine bestimmte Datei in Excel geöffnet ist?

Ich habe es schon mit der IsFileinUse Funktion aus der Codelib versucht aber die sagt mir beim Speichern einer Datei, dass diese immer in Benutzung ist.

Ich versuche eine Datei mit einem TSaveFileDialog zu speichern und beim Event OnFileOKClick frage ich mit der obigen Funktion ab ob die Datei in Benutzung ist und bekomme immer ein positives Ergebnis zurück.

LG

Mirko

DieDolly 20. Jun 2020 16:30

AW: Prüfen ob bestimmte Datei in Excel geöffnet ist
 
IsFileInUse gibt nur wahr oder falsch zurück.

Versuchs mal damit https://stackoverflow.com/questions/...rom-my-program

himitsu 20. Jun 2020 16:56

AW: Prüfen ob bestimmte Datei in Excel geöffnet ist
 
Im Grunde ist es meist egal, wer es ist, denn wichtig ist nur ob oder ob nicht.

PS: Auch der FileDialog kann die Datei geöffnet haben.
* einem ein Handler im Explorer, zu Anzeige von Dateiinfos, dem Icon oder einem Overlay,
* und natürlich auch der Virenscanner, während auf die Datei zugegriffen wird (beim Rausholen des Icon und der Zusatzinfos)
* oder der Dialog selber, in Form einer Vorschau
* und beim Speichern gibt es einen Zugriffstest, den man in den Optionen des Dateidialog de-/aktivieren kann

Klar, das Handle besorgen, dann in allen Programmen die Handles auslesen und dieses Handle suchen, aber ...
Sich in alle Programme hooken, dort alle Handles suchen, zu jedem Handle den Dateinamen rausfinden und das verrgleichen, aber neeeeeee...

Dann, siehe ganz unten in dem Link, gibt es in aktuelleren Windowsen eine API, wo man aber nur Programme rausbekommt, die ihre offenen Dateien dort registrieren, was z.B. Excel macht.

mmw 20. Jun 2020 17:21

AW: Prüfen ob bestimmte Datei in Excel geöffnet ist
 
Hallo,

eine andere Möglichkeit wäre noch.
Delphi-Quellcode:
var
  excel_obj: olevariant;
  i: Integer;

begin

  excel_obj := GetActiveOleObject('Excel.Application');

  for i := 1 to excel_obj.workbooks.count do

    if excel_obj.workbooks.item[i].name = 'Mappe1.xlsx' then

      showmessage(excel_obj.workbooks.item[i].name+' ist geöffnet');


   // excel_obj.Quit;
      excel_obj := Unassigned;

end;
der Code ist jetzt nur eine grob Fassung.

Gruß

oakley 20. Jun 2020 20:29

AW: Prüfen ob bestimmte Datei in Excel geöffnet ist
 
Danke mmw, das funktioniert.

LG

Mirko


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz