Entwickler-Ecke

Dateizugriff - Meldungen deaktivieren


delphijanka - Di 15.06.10 16:01
Titel: Meldungen deaktivieren
Hej.
Wenn ich mit Delphi eine bestimmte Excel-Datei öffne, um Daten zu lesen, erscheint eine Excel-Meldung, die beim Öffnen dieser Datei typischerweise immer erscheint (z.b. Frage nach Aktualisierung).
Somit wird die Datei nicht gelesen, solange ich den Button der erschienenen Meldung nicht betätige.
Wie kann ich solche Excel-Meldungen komplett "deaktivieren" (besser: ignorieren), sodass sie nicht beim Öffnen angezeigt werden?
Oder anders gefragt: wie kann ich automatisch den Button betätigen?
Danke.


ALF - Di 15.06.10 16:15

Mh.., fällt mir das ein.

Quelltext
1:
Exel.EnableEvents := False                    

ob richtig? :gruebel:

Gruss Alf


delphijanka - Mi 16.06.10 11:08

wenn ich also habe:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
...
var Appl: OLEVariant;
begin
Appl := CreateOleObject('Excel.Application');
Appl.Visible := false;
Appl.WorkBooks.Open('Adresse der Excel-Datei');
...

so bringt


Delphi-Quelltext
1:
Appl.EnableEvents := False                    


rein gar nichts.


ALF - Mi 16.06.10 14:53

An welcher Stelle hast Du es den eingefügt!
richtig müsste es hier sein:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
...
var Appl: OLEVariant;
begin
  Appl := CreateOleObject('Excel.Application');
  Appl.EnableEvents := False:
  ......
  ......

kann natürlich auch sein das dies nicht unter ein "Event" fällt.
ansonsten mal an der gleichen Stelle wie gezeigt, Appl.DisplayAlerts := False, setzen!

!! am Ende der Procedure natürlich auch wieder auf True setzen!!

Gruss Alf


delphijanka - Mi 16.06.10 15:16

Danke Alf.

1) ALso ich habe zu Beginn beides auf false gesetzt. Einige Meldung werden nicht angezeigt, andere Meldungen erscheinen immer noch. Vlcht gibs bei Excel noch irgendeine Funktion zum Deaktivieren anderer Meldungen..

2) Warum eigentlich beide wieder auf true setzen? Die Datei wird nach dem Lesen eh wieder geschlossen.

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


ALF - Mi 16.06.10 15:51

user profile icondelphijanka hat folgendes geschrieben Zum zitierten Posting springen:
Vlcht gibs bei Excel noch irgendeine Funktion zum
Deaktivieren anderer Meldungen..
glaube für operationen zwischen den Mappen/Tabellen (copy/move Zellenberechnung usw.) gibt es noch extra Meldungen die man unterdrücken kann, aber welche....? Sorry :gruebel: muss ich passen.
user profile icondelphijanka hat folgendes geschrieben Zum zitierten Posting springen:
2) Warum eigentlich beide wieder auf true setzen? Die Datei wird nach dem Lesen eh wieder geschlossen.
Genau deswegen, sollte vor dem weiter arbeiten alles wieder auf True sein. Man weiss ja nie was alles noch passiert!! Beim nächstenmal kommt dann die Frage "ich erhalte keine Meldungen von Exel, Warum??" :wink:

Gruss Alf


Chemiker - Do 17.06.10 01:04

Hallo delphijanka,


Delphi-Quelltext
1:
Appl.WorkBooks.Open('Adresse der Excel-Datei');                    


Hier sollte der komplette Path angegeben werden.
z.B. :


Delphi-Quelltext
1:
Appl.WorkBooks.Open('c:\Users\User\Documents\Adresse der Excel-Datei');                    


Oder wo auch immer die Excel-Datei ist.

Bis bald Chemiker


ALF - Do 17.06.10 13:50

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
glaube für operationen zwischen den Mappen/Tabellen (copy/move Zellenberechnung usw.) gibt es noch extra Meldungen die man unterdrücken kann,...
Fällt mir gerade ein, bei solchen Aufrufen kann man, wenn ich es noch richtig weiss, einen Parameter mit übergeben (True/False).
Der verhindert sogenannte Sicherheitsabfragen wie "wollen sie die Daten ändern" oder so ähnlich.
So das die Veränderung direkt, ohne Nachfrage, durchgeführt wird!
Diese Meldungen gelten aber nur für die Operationen und können nicht dauerhaft deaktiviert werden!

Leider alles so lange her :(

Gruss Alf


Gerd Kayser - Do 17.06.10 16:29

user profile icondelphijanka hat folgendes geschrieben Zum zitierten Posting springen:
Hej.
Wie kann ich solche Excel-Meldungen komplett "deaktivieren" (besser: ignorieren), sodass sie nicht beim Öffnen angezeigt werden?


Versuchs mal mit

Delphi-Quelltext
1:
Appl.DisplayAlerts:= false;                    


Teufelskreis - Mi 04.08.10 10:08

hmmm... also bei mir klappt es... :roll: