Adresse an Word übergeben

  • Hallo alle zusammen,
    mit einer alten Adressverwaltung war es möglich eine Adresse an Word zu übergeben. Da ich die Funktion nützlich finde, dachte ich mir nichts böses und wollte die Funktion als Clientscript ins Davidadressbuch einbauen:
    ich habe folgendes Script geschrieben:

    sub Initialize(oInfoCenter, key)
    Set oBar = oInfoCenter.GetCommandBar("AddressEditor/Standard")
    oBar.Insert -1, "Adresse kopieren", key, "adress.ico", "AdressCopy", true
    end sub

    sub AdressCopy(oInfoCenter, oContext)
    Set oItem = oContext.Item
    Set oAddressItem = oInfoCenter.Account.User.VCard
    dim sDaddr
    sDaddr = oItem.Company+chr(10)+oItem.FirstName+" "+oItem.LastName+chr(10)

    msgbox(sDaddr) '<- diese Zeile ist nur zur Kontrolle und zeigt das die Variablen richtig zusammengestellt wurden.

    'ab hier klappts dann leider aus dem David Client nicht mehr.
    dim WshShell
    set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "notepad"
    WshShell.AppActivate "Editor"
    WScript.Sleep 100
    WshShell.SendKeys sDaddr
    end sub

    Wenn ich den gleichen Script um die Besonderheiten von David kürze und direkt in Windows ausführe, funktioniert der Script:

    dim sDaddr
    sDaddr = "Firma"+chr(10)+"Vorname"+" "+"Nachname"+chr(10)
    msgbox(sDaddr)
    dim WshShell
    set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "notepad"
    WshShell.AppActivate "Editor"
    WScript.Sleep 100
    WshShell.SendKeys sDaddr

    Warum klappt der WshShell Aufruf nicht aus dem David Client?
    Ich könnte die Adresse natürlich in einen Textfile schreiben, den ich mit einem eigenen Programm abfange, das dann die Übergabe an
    Word macht, das Programm müsste dann aber ja ständig auf allen Stationen laufen, wo die Funktion genutzt werden soll.
    Vielleicht hat ja jemand eine bessere Idee als ich. Vorab vielen Dank.
    Jens Osterwohldt

    Spezialist bei David Problemen, oder bei der Migration zu Kerio Connect (ebenfalls von AVM KEN! 4).

  • Jaaa genau das selbe Problem habe ich auch gerade.
    David bricht mit der Verarbeitung immer an dieser Stelle ab:

    Code
    set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run("C:\Windows\explorer.exe")


    Anscheinend immer wenn WScript.CreateObject() aufgerufen wird.

    Haben Sie eventuell eine Lösung für dieses Problem gefunden?

  • Hallo Bender007,

    leider keiner keinen direkten Weg. Über einen Umweg gings dann aber doch:

    1) Den Inhalt des Shell Aufrufs an einem vordefinierten Ordner in dem Script in eine Textdatei schreiben lassen
    2) Ein externes Programm laufen lassen, das diesen Ordner überwacht und wenn die Textdatei angelegt wurde, die Aufgabe darin ausliest, und ausführt.

    Fertig ;) Nicht elegant, aber funktionell

    Viele Grüße
    Jens Osterwohldt

    Spezialist bei David Problemen, oder bei der Migration zu Kerio Connect (ebenfalls von AVM KEN! 4).

  • Hallo,

    vielen Dank für Ihre Antwort!
    Das ist schade ich nehme mal an Tobit hat dazu nichts gesagt :|
    Es würde mich einfach mal interessieren ob dieses Verhalten eventuell beabsichtigt ist bzw. vielleicht durch .ini Datei verändert werden kann.

    Die Idee mit einem Programm das eine Datei/Ordner überwacht hatte ich auch, aber wie Sie schon sagten Elegant ist was anderes :)
    Ich werde mal versuchen eine Anfrage ins TPN zu stellen... Auch wenn ich die Antwort schon kenne :/

  • Also bei mir Funktioniert es mit:


    Funktion:


    Definitionen im Bereich 'Strings Doc-Stat
    sWordIcon = "winword.ico"
    sBarNameWord = "Adresse an Word übergeben"

    Definition des Buttons:
    'Das Icon wird, wenn es ohne Pfad angegeben ist im Verzeichnis "david\code\scripts" erwartet
    Set oBar = oInfoCenter.GetCommandBar("AddressEditor/Standard")
    oBar.Insert -1, "An Word übergeben", key, "winword.ico", "OnWord", true

  • WOW ich glaubs nicht es lag tatsächlich an dem

    Code
    WScript.CreateObject("com.sun.star.ServiceManager")

    Wenn ich das "WScript." weglasse funktioniert es!!!

    Du bist mein Held!!! Vielen Dank!

  • Hallo,

    Ich habe versucht das für mich umzusetzten und hat auch alles wunderbar geklappt (siehe 1. Quellcode). Ich würde nur gerne noch miteinbauen, dass geprüft wird ob schon ein Worddokument aktiv ist und gegebenenfalls dort hinein kopiert wird(Siehe 2.Quellcode). Das funktioniert so jedoch nicht... weiß jemand wie man das richtig umsetzen könnte?

    1.

    Code
    sub Initialize(oInfoCenter, key) Set oBar = oInfoCenter.GetCommandBar("AddressEditor/Standard") oBar.Insert -1, "Adresse kopieren", key, "adress.ico", "AdressCopy", true end sub sub AdressCopy(oInfoCenter, oContext) Set oItem = oContext.Item Set oAddressItem = oInfoCenter.Account.User.VCard dim sDaddr sDaddr = oItem.Company+chr(10)+oItem.FirstName+" "+oItem.LastName+chr(10)+oItem.Street+chr(10)+oItem.ZipCode+" "+oItem.City dim wordApp Set wordApp = CreateObject("Word.Application") wordApp.visible = true wordApp.Documents.Add wordApp.Selection.TypeText sDaddr end sub

    2.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!