Einen AnsiString an Excel übergeben



  • habe ich probiert!

    strData = mandantenNummer_Ges;
                        MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4).
                        OlePropertySet("Value", strData);
    

    Schmiert ab mit: "Falscher Variable Typ!"



  • Probier mal eine der beiden folgenden Varianten

    MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4).
    OlePropertySet("Value", strData.c_str());
    

    oder

    MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4).
    OlePropertySet("Value", Variant(strData));
    


  • zu1: strData.str() geht nicht bei Variant
    zu2: "falscher Variable Typ!"
    😞 😡



  • Ich hatte fälschlicherweise angenommen, dass strData vom Typ AnsiString ist. Warum übergibst du nicht direkt mandantenNummer_Ges? Abgesehen davon sollte die Variante von akari problemlos funktionieren. Vielleicht liegt es ja gar nicht an strData.



  • weil das von akari auch nicht geht....ich vermute er hat das problem einen ansiString zu übergeben!

    Mache ich das so:

    int castedManNGes;
                        castedManNGes = StrToInt(mandantenNummer_Ges);
                        strData = castedManNGes;
                        MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", 1,4).
                        OlePropertySet("FormulaR1C1" , strData);
    

    ...funktioniert das!!!!
    😕 😮



  • so ein mist!
    ich kann zwar zahlen übergeben aber keine zeichenketten aus einer variablen.

    // j steht für die zeile und 1 für die spalte
     MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2).
     OlePropertySet("Value", strData);
    

    will ich in strData(Variant) zeichenketten speichern bekomme ich immer falscher variabletyp zahlenwerte funktionieren aber.

    schreibe ich

    // j steht für die zeile und 1 für die spalte
                          MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2).
                          OlePropertySet("Value", "hasse nich gesehen");
    

    geht das auch 😕
    ratlos....plz help



  • Wie gesagt, probiers mal so

    MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", j,2).OlePropertySet("Value" , mandantenNummer_Ges.c_str());
    

    Du könntest auch einfach die im Link erwähnte Wrapperklassen verwenden
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39259.html



  • ja so gehts!!!! DANKE Braunstein!
    Was ist das für eine Funktion???
    Was macht die und warum ist das hier notwendig???



  • Schau doch einfach mal in die Hilfe zu AnsiString.
    c_str() gibt einen const char* zurück (Nullterminiert), der den String enthält. Scheinbar erwartet OlePropertySet("Value" , ..); einen derartigen String. Normalerweise steht hier ein Variant und der hat eigentlich einen Konstruktor für AnsiString. Schau doch auch mal in die Bibliothek von AndreasW (siehe obigen Link). Die verwende ich auch. Ich habe sie allerdings noch etwas verändert (debuggt und erweitert). Wenn du willst kann ich sie dir zuschicken oder falls ein Moderator das zulässt in die FAQ mit einfügen.



  • Wenn sie ordentlich kommentiert ist, gerne. 🙂
    Poste sie ggf. hier, wir werden den FAQ-Eintrag dann entsprechend erweitern.


Anmelden zum Antworten