Autor |
Beitrag |
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Do 11.02.10 20:13
Wie im Titel schon zu lesen ist, suche ich eine Möglichkeit um eine Excel-Datei zu öffnen, welche mit einem Kennwort in Excel selbst versehen ist. Dabei soll die Datei natürlich nicht nur geöffnet werden, sondern auch entsperrt werden, also soll mein Programm das Kennwort eingeben.
Bei meinen Überlegungen bin ich auf 2 Möglichkeiten gekommen:
- Excel per Parameter zu starten. Die Datei selbst ist ja nicht das Problem, aber dann das Kennwort zu übergeben (bin durch Google aber auch nicht schlauer geworden, ob das so geht)
- Excel fernsteuern per OLE (?) Ob und wie das geht, ein großes
Webo
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 12.02.10 09:14
Webo hat folgendes geschrieben : | Excel per Parameter zu starten. Die Datei selbst ist ja nicht das Problem, aber dann das Kennwort zu übergeben (bin durch Google aber auch nicht schlauer geworden, ob das so geht) |
Ich kenn mich mit Excel in der Hinsicht garnicht aus, aber geht da nicht ein Fenster auf, wo du das Kennwort eintippen sollst? Das könnte man evtl ansprechen wenns nicht anders geht.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Webo 
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Fr 12.02.10 18:30
Ich hab es jetzt (vorerst) hinbekommen, denn ich weiß noch nicht, ob das so funktioniert, wie mein Vater sich das vorgestellt hat.
Hier meine Lösung:
- Erstmal die Excel-TypenBiblios installiert *g*
- Folgende 3 Komponenten auf die Form gezogen: TExcelApplication, TExcelWorkbook, TExcelWorksheet
- Folgenden Code zum "Verbinden" genutzt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| var flcid:Cardinal; _bool,_password:olevariant; Filename: OleVariant;
begin Filename := 'E:\Test.xls';
flcid:=GetUserDefaultLCID; try ExcelApplication1.Connect; ExcelApplication1.Visible[flcid]:=true; ExcelApplication1.UserControl:=true; ExcelApplication1.Application.Workbooks.Open(Filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam, fLCID); ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets.Item[1] as ExcelWorkSheet); |
- Und zum Aufheben des Kennworts folgenden Code:
Delphi-Quelltext 1: 2: 3: 4: 5:
| _bool:=true; _password:='Passwort'; ExcelWorksheet1.unProtect(_password); ExcelWorkbook1.Unprotect(_password); |
- Und falls man das Kennwort wieder setzen will:
Delphi-Quelltext 1: 2:
| ExcelWorksheet1.Protect(_password,_bool,_bool,_bool); ExcelWorkbook1.Protect(_password,_bool,_bool); |
- Anschließend müsste man Excel noch wieder schließen, was ich aber in meinem Beispiel nicht brauche / nicht gewollt ist
Delphi-Quelltext 1: 2: 3:
| ExcelWorksheet1.Disconnect; ExcelWorkbook1.Disconnect; ExcelApplication1.Disconnect; |
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
|