Seite 1 von 1

Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 16:05
von Ingo Platte
Hallo,

ich bearbeite seit kurzen Exceldateien mit Hilfe von Purebasic und Adomate, das funktioniert
mittlerweile auch ganz gut, nur das ich keine Exceldatei mit Passwortschutz öffnen kann, obwohl mir das Passwort bekannt ist.

Wenn ich eine Exceldatei mit dem Passwort "test" öffnen möchte, versuche ich wie folgt vorzugehen:

Code: Alles auswählen

ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFile + "; Extended Properties=" + Chr(34) + "Excel 8.0" + Chr(34)
CN               = ADOmate_OpenDatabase(ConnectionString, "", "test")
ich bekomme von der Funktion ADOmate_GetLastErrorDescription() folgende Fehermeldung wieder:
  • --> One or more arguments are invalid.
    --> Possibly a numerical overflow or too many nested objects, -if so, try splitting your method call into two or more subcalls.
:shock:

Welches Argument soll den falsch sein? Das Passwort ist definitiv richtig und einen Usernamen gibt es in einer Exceldatei
nicht, deshalb hab ich hier ein "" eingefügt. Wie kann ich noch vorgehen?

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 17:01
von Kiffi
Hallo Ingo,

ist ein Fehler in der ADOmate.pbi

such mal dort nach

Code: Alles auswählen

If SUCCEEDED(*connection\connectionObject\Invoke("Open('" + connection$ + "', " + user$ + ", " + password$ +")"))
und ersetze sie durch:

Code: Alles auswählen

If SUCCEEDED(*connection\connectionObject\Invoke("Open('" + connection$ + "', '" + user$ + "', '" + password$ +"')"))
Grüße ... Kiffi

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 17:57
von Ingo Platte
Danke für die schnelle Antwort Kiffi, aber jetzt bekomme ich eine andere Fehlermeldung:
  • --> Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet.
Es scheint aber irgendwie damit zusammenzuhängen

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 18:16
von Kiffi
Ingo Platte hat geschrieben:--> Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exklusiv von einem anderen Benutzer geöffnet.
ja, das scheint dann aber nicht an ADOmate zu liegen, sondern
eine excelspezifische Sache zu sein.

Kann ich von hier aus nicht prüfen; habe kein Excel installiert.

Grüße ... Kiffi

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 18:47
von Josh
schließe excel mal und schau im task-manager ob da noch ein prozess von excel läuft. vieleicht ist beim probieren da was zurückgeblieben.

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 26.05.2010 23:46
von Kiffi
hier ist die korrekte ADOmate_OpenDatabase()
frisch aus der Tastatur von Stephen:

Code: Alles auswählen

Procedure.i ADOmate_OpenDatabase(connection$, user$="", password$="")
  Protected *connection._ADOmateConnection
  ;Allocate memory for a connection object.
    *connection = AllocateMemory(SizeOf(_ADOmateConnection))
  If *connection
    ;Now attempt to create an ADO connection object which can be used to work with SQL.
      *connection\connectionObject = COMate_CreateObject("ADODB.Connection")
      If *connection\connectionObject
        If user$=""
          user$ = "#empty"
        Else
          user$ = "'" + user$ + "'"
        EndIf
        If password$=""
          password$ = "#empty"
        Else
          password$ = "'" + password$ + "'"
        EndIf
        If SUCCEEDED(*connection\connectionObject\Invoke("Open('" + connection$ + "', " + user$ + ", " + password$ +")"))
          ADOmate_SetError(#ADOmate_OKAY)
        Else
          ADOmate_SetError(#ADOmate_COMateERROR)
          *connection\connectionObject\Invoke("Close")
          *connection\connectionObject\Release()
          FreeMemory(*connection)
          *connection = 0
        EndIf          
      Else
        ADOmate_SetError(#ADOmate_COMateERROR)
        FreeMemory(*connection)
        *connection = 0
      EndIf
  Else
    ADOmate_SetError(#ADOmate_OUTOFMEMORY)
    *connection = 0
  EndIf
  ProcedureReturn *connection
EndProcedure
(an alle ADOmate'ler, die es betrifft: bitte in Eurem Code ersetzen)

Grüße ... Kiffi

Re: Exceldateien (mit Passwordschutz) per Adomate öffnen

Verfasst: 27.05.2010 19:27
von Ingo Platte
Danke Kiffi