AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prüfen ob bestimmte Datei in Excel geöffnet ist
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von oakley · begonnen am 20. Jun 2020 · letzter Beitrag vom 20. Jun 2020
Antwort Antwort
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#1

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

  Alt 20. Jun 2020, 16:10
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
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

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

  Alt 20. Jun 2020, 17:30
IsFileInUse gibt nur wahr oder falsch zurück.

Versuchs mal damit https://stackoverflow.com/questions/...rom-my-program
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 20. Jun 2020, 17:56
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Jun 2020 um 17:59 Uhr)
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#4

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

  Alt 20. Jun 2020, 18:21
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.xlsxthen

      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ß

Geändert von mmw (20. Jun 2020 um 19:37 Uhr)
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#5

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

  Alt 20. Jun 2020, 21:29
Danke mmw, das funktioniert.

LG

Mirko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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