OLE - AnsiString -> Variant
-
Hallo,
ich versuche gerade per OLE Excel zu steuern, dies funktioniert auch einwandfrei.
Ich übergebe meiner Anwendung einen Pfad und ein Kennwort. Die ist als AnsiString deklariert. Für die übergabe an Excel (Workbooks.Open) gebe ich dies mit. Ich erhalte dann allerdings die Fehlermeldung das die Typen nicht kompatibel sind. Sobald ich die Wert festlege (siehe Auskommierung) funkt. es einwandfrei.
Wie kann ich meinen AnsiString in ein Variant umwandeln?Variant vFileName, vWDocuments, vWDocument, vReadOnly, vLink, vFormat, vReadPass; AnsiString strOpenFile, strPasswort; vFileName = Variant(strOpenFile); // vFileName = "c:\\test2.xls"; vLink = Unassigned; vReadOnly = false; vFormat = Unassigned; // vReadPass = strPasswort; vReadPass = "test"; wbSet.OleFunction("Open", vFileName, vLink, vReadOnly, vFormat, vReadPass);
-
Wie wäre es mit einer Fehlermeldung?! Woher sollen wir sosnt wissen welcher Fehler aufgetreten ist.
-
Hallo,
Du hast da mehrere Varianten. Du kannst deinen AnsiString in ein Variant casten.
AlsowbSet.OleFunction("Open", (Variant) vFileName, ...Das funktioniert zwar, ist mir persönlich aber etwas supekt. Die andere Variante ist mit Hilfe von AnsiString::c_str() einen const char* draus zu machen.
AlsowbSet.OleFunction("Open", vFileName.c_str(), ...Das geht auch.
Ciao
-
Die Variante mit dem const char* funktioniert, meiner Erfahrung nach, zuverlässiger.
-
Hallo,
ich habe bei vorgeschlagenen Lösungen getestet. Allerdings mit keinem positivem Ergebnis.Wenn ich dem
Variant vFileName = "c:\\test2.xls";den Wert so zuweise lädt er die Datei. Übergebe ich allerdings den
AnsiStringVariant vFileName = strOpenFile;Meldet sich die Anwendung mit "Ausnahmefehler aufgetreten"
Auch das Cast (Variant) oder .c_str() enden auf dem o.g. Fehler.Gibt es keine andere Möglichkeit einen AnsiString in ein Variant umzuwandeln?
-
Es müßte auch noch folgendes gehen
wbSet.OleFunction("Open", Variant(vFileName), ...da der Konstruktor von Variant für AnsiString überladen ist.
-
Hallo
ich habe in einen meiner alten Projekte das gefunden
WordApplication1->Documents->Open(OleVariant(StringToOleStr(AppPath + "test.doc")),bis bald
akari
-
Den Ansatz habe ich bereits gehabt. Dabei läuft das ganze auf die Fehlermeldung:
Falscher Variablentyp.wbSet.OleFunction("Open", Variant(vFileName), ...Wie genau ist der Ansatz mit dem const char* ? Wie meinst ihr das?
-
Das hier ist gemeint:
Braunstein schrieb:
wbSet.OleFunction("Open", vFileName.c_str(), ...
-
Wobei ich da was verwechselt habe. vFileName ist bei dir ja ein Variant. Es muß also hier rein
vFileName = Variant(strOpenFile.c_str());Man könnte das auch so machen
wbSet.OleFunction("Open", strOpenFile.c_str(), ...