VBA-Makro in Cpp-Code umwandeln



  • Hi Leute, ich habe hir folgenden Makro-Code

    Sub Makro2()
        With Selection.FormFields(1)
            .Name = "Kontrollkästchen1"
            .EntryMacro = ""
            .ExitMacro = ""
            .Enabled = True
            .OwnHelp = False
            .HelpText = ""
            .OwnStatus = False
            .StatusText = ""
            With .CheckBox
                .AutoSize = True
                .Size = 10
                .Default = False
            End With
        End With
    End Sub
    

    Kann mir einer sagen, wie ich diesen Code in C++ ausdrücken kann?

    Dieses Makro deaktiviert ein Kontrollkästchen aus dem Word2000-Formular bereich.
    Ps: ich habe zwar schon einen Beitrag darüber gefunden, aber da habe ich nicht durchgeblickt, kann mir das mal bitte einer so erklären, das auch ich das verstehe?? Währe echt nett von euch.

    Danke schon mal für eure Hilfe.

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • worauf bitte soll denn dein Code wirken? auf das Selbe Word-Formular?

    -junix



  • Ja, auf das selbe Worddokument, dieses Dokument soll als eine Art vorlage dienen und wird geöffnet und nach dem Ausfüllen später wieder unter anderem Namen gespeichert, und in dem gepeichterten Dokument soll dann das Kontrollkästchen je nach Angaben des Users aktiviert oder deaktiviert sein.



  • -xXx-,
    sowas geht (imho nur vernünftig) mit OLE-Automation. Du solltest Dich vielleicht erst einmal schlau machen, wie das prinzipiell funktioniert. Anschließend, programmierst Du das Makro im CBuilder einfach nach - das ist dann der leichte Teil.



  • Wie das prinzipiell funktioniert weiß ich so einiger maßen, wie ich Texte einfüge, wie ich eine Formular-Textfeld ansteuere ist auch klar, aber ich komme bei dem Scheiß Konntrollkästchen nicht weiter.



  • Um mein Problem noch mal etwas deutlicher darzustellen:

    Ich möchte in einem Worddokument Kontrollkästchen ansprechen. Unter http://www.lowell.de/check.gif ist das ganze zu sehen. Das Kontrollkästchen ist in Word unter "Formulare" zu holen.



  • -xXx-,

    -xXx- schrieb:

    Wie das prinzipiell funktioniert weiß ich so einiger maßen

    wenn ich das Makro richig verstehe, mußt Du mit den passenden Funktionen (OlePropertyGet, OlePropertySet, ...) auf die Eigenschaft

    Selection.FormFields(1).Checkbox.Default
    

    zugreifen. Wobei noch zu klären währe, was bei Dir ausgewählt ist ("Selection").



  • Hi -xXx-,
    ich glaube ich weiß was du von uns willst.
    Vor einiger Zeit hatte ich das gleiche Problem und bin auch fast daran verzweifelt, aber nach einigen langen Nächten habe ich die Lösung irgendwie zusammengebastelt gehabt.

    Der folgende Code dürfte die weiterhelfen:

    #include <utilcls.h>
    
    TVariant v(static_cast<String>("Kontrollkästchen1"));
    Variant my_word,documents,my_doc,fields,item,item1;
    
    my_word = CreateOleObject("Word.Application"); 
    my_word.OlePropertySet("Visible", 1);
    
    documents = my_word.OlePropertyGet("Documents"); 
    documents.OleProcedure("Open", "c:\\test.doc");
    
    my_doc = my_word.OlePropertyGet("ActiveDocument");
    
    fields = my_doc.OlePropertyGet("FormFields");
    
    item = fields.OleFunction("Item", &v);
    
    item1 = item.OlePropertyGet(“Checkbox”);
    item1.OlePropertySet(“value”,true);  //Das true aktiviert das Kästchen, false würde es deaktivieren
    

    ich hoffe das war das was du brauchst.
    na dann noch einen schönen 2. Weihnachtsfeiertag :xmas1:

    mfG Tim



  • ja genau das ist was ich wollte. Danke Tim und natürlich auch den anderen.
    Jetzt funkt alles.



  • -xXx- schrieb:

    Ps: ich habe zwar schon einen Beitrag darüber gefunden, aber da habe ich nicht durchgeblickt

    In Zukunft Nachfragen zu einem Beitrag bitte in dem betreffenden Thread stellen, mindestens aber einen Link zu dem jeweiligen Beitrag setzen.
    Danke!


Anmelden zum Antworten