Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Abfragen ob Excel Datei einen Passwortschutz hat (https://www.delphipraxis.net/169255-abfragen-ob-excel-datei-einen-passwortschutz-hat.html)

ferby 6. Jul 2012 18:54

Abfragen ob Excel Datei einen Passwortschutz hat
 
Hallo,

ich habe die Aufgabe bei ca. 5000 Excels automatisch bestimmte Zeilen zu ändern, wenn die Excel Datei NICHT geschützt ist (ich meine die Passworteingabe gleich beim öffnen des Excels).

Jetzt habe ich herausgefunden, dass einige der hundert Parameter bei der Funktion excel.Workbooks.Open für das Passwort ist.

excel.Workbooks.Open("meinedatei.xls", EmptyParam, False, EmptyParam, "Passwort",
"SchreibPasswort", EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);

Aber leider hilft mir das auch nicht weiter, da ich das Passwort ja gar nicht kenne...
Wenn ich bei "Passwort" einen EmptyParam übergebe, dann öffnet sich von Excel ein Fenster mit der Passworteingabe (--> manueles Eingreifen benötigt)

Ich will Excels mit Passwort Schutz einfach ignorieren... Aber wie finde ich heraus ob es geschützt ist??? Es müsste vor
excel.Workbooks.Open passieren, da hier schon das Popup von Excel aufgeht... Aber davor kann ich auf Excel überhaupt nicht zugreifen.

Weiß jemand Rat?

lg,
Ferby

ferby 6. Jul 2012 19:58

AW: Abfragen ob Excel Datei einen Passwortschutz hat
 
Hallo,

ich habe fürs erste eine Lösung als Holzhammermethode gefunden.
Wenn als Passwort ein Leerstring übergeben wird, funktioniert es wenn das Excel keinen PW Schutz hat und ansonsten bekomme ich eine Exception. So kann ich herausfinden ob ein Excel einen Passwortschutz hat ohne das der User manuelle eingaben machen muss. Für besser Vorschläge bin ich offen.
Delphi-Quellcode:
      try
        Excel.Workbooks.Open(ListBox_XLS_Errors.Items[i], emptyParam, emptyParam, emptyParam,
        '', emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
        emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, _lcid);
      except
        on E : Exception do
        if Pos(E.Message, 'Das eingegebene Kennwort ist ungültig.') = 0 then
        begin
          showmessage('Hat PW schutz!');
          Continue;
        end
        else
        begin
          ShowMessage('Anderer Fehler: '+E.Message);
          Halt;
        end;
      end;

sx2008 6. Jul 2012 20:48

AW: Abfragen ob Excel Datei einen Passwortschutz hat
 
Hier noch ein kleiner Trick zur besseren Lesbarkeit.
Mit einer Konstanten wird die Absicht gleich viel klarer:
Delphi-Quellcode:
const
  EMPTY_PASSWORD = '';
begin
try
  Excel.Workbooks.Open(ListBox_XLS_Errors.Items[i], emptyParam, emptyParam, emptyParam,
        EMPTY_PASSWORD, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
        emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, _lcid);


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