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.
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