Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei in EXCEL "schreibgeschützt" öffnen (https://www.delphipraxis.net/138483-datei-excel-schreibgeschuetzt-oeffnen.html)

TeronG 11. Aug 2009 10:23


Datei in EXCEL "schreibgeschützt" öffnen
 
HI
Habe ein kleines Progrämmchen geschrieben, dass Daten in eine CSV schreibt. (AppendStringToFile)
Wenn ich nun aber diese Datei mit EXCEL öffne (ExecuteProgramm) bekomme ich beim Schreibversuch weiterer Daten immer eine Fehlermeldung, dass die Datei schon geöffnet sei. (Isse ja auch ^^)

In EXCEL kann man ja eine Datei "schreibgeschützt" öffnen.
Kann ich das auch aus meinem Programm heraus z.B. mit ShellExecute machen? Wenn ja wie?

Bin beim Suchen (noch) nicht fündig geworden. :gruebel:


BTW: AppendStringToFile & ExecuteProgramm: Beide aus der DP :thumb:

himitsu 11. Aug 2009 10:28

Re: Datei in EXCEL "schreibgeschützt" öffnen
 
Du könntest auch versuchen einfach via SetFileAttributes das Schreibschutzflag setzen,
vor der Übergabe an Excel, dieses wird von Excel eigentlich beachtet.

TeronG 11. Aug 2009 10:42

Re: Datei in EXCEL "schreibgeschützt" öffnen
 
:wall:
Du bist mein Held!

Jetzt muss ich nur bevor ich selber wieder rein schreiben will das zurücksetzen :)

himitsu 11. Aug 2009 11:31

Re: Datei in EXCEL "schreibgeschützt" öffnen
 
eventuell das Excel per ShellExecuteEx oder CreateProcess starten, dann kannst du dieses überwachen und wenn es z.B. wieder beendet wird, dann das Attribut wieder zurücksetzen.

und vielleicht findet sich ja doch noch ein Parameter, mit welchem man auch den Schreibschutz nur Excel-intern setzen kann.

jfheins 11. Aug 2009 11:56

Re: Datei in EXCEL "schreibgeschützt" öffnen
 
Oder einfach selbser die Datei immer geöffnet lassen, mit TFileStream - da kann man ja auch angeben dass andere Lesen aber nicht schrieben dürfen ;)

TeronG 11. Aug 2009 12:31

Re: Datei in EXCEL "schreibgeschützt" öffnen
 
Da ich zyklisch Werte hinzufüge muss ich die Datei auch sofort wieder "freigeben".

@jfheins: jo .. ich fand aber die AppendToFile procedure nice und wollte die so lassen :)

Parameter für EXCEL währe fein ... hab ich auch schon gefunden.
Zitat:

/r <Dateiname>
Öffnet nach dem Start von Excel die angegebene Datei schreibgeschützt.
Nun muss ich diesen nur noch übergeben....



Interessanterweise habe ich beim beenden (!) meines Programmes wenn ich ExecuteProgramm verwende dauernd eine Fehlermeldung bekommen.

Zitat:

Exception-Klasse EPrivilege mit Meldung 'Privilegierte Anweisung'.
Mit ShellExecute habe ich diese nicht. :gruebel:



EDIT: so btw mal die Lösung:
Delphi-Quellcode:
 
temp := '/r "'+vDataFileName+'"';
ShellExecute(Application.Handle,'open', 'excel.exe',pchar(temp),nil,sw_show);


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 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