Noch ein (kurzes) VBS Script --> Autoit

  • Hallo liebe Experten!

    Habe hier ein VBS-Script, wlches ich gern über AuoIt ausführen möchte.
    Es startet eine passwortgeschützte OpenOffice-Calc Datei ohne die lästige manuelle Passworteingabe.

    Hat jemand Lust, mir zu helfen?

    Spoiler anzeigen


    Set ser_man = WScript.CreateObject("com.sun.star.ServiceManager")
    Set desk = ser_man.createInstance("com.sun.star.frame.Desktop")
    Dim arg(0)
    Set arg(0) = ser_man.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    arg(0).Name = "Password"
    arg(0).Value = "abc"
    Dim x
    Set x = desk.loadComponentFromURL("file:///D:/Datei.ods", "_blank", 0, arg)

    Dank im Voraus!

  • Du willst das Script über AutoIt ausführen, oder du willst es in AutoIt übersetzen und als AutoIt Quellcode haben?

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Schau mal HIER !

    Als Ausgangspunkt für einen Anfänger vielleicht brauchbar. Ob der erzeugte Code dann in der neusten AutoIt-Version immer läuft, würde ich bezweifeln. Aber mit den dann möglicherweise erscheinden Fehlern, findet man schnell den falschen Funktionsnamen oder ggf. den fehlenden Parameter.

    Probier halt mal...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Danke - den hatte ich auch schon gefunden. Er läuft aber leider nicht (Fehlermeldungen; kommt ja auch aus 2005).

    Bin mal manuell angefangen, kriege aber hier eine Fehlermeldung:

  • Sieht im ersten Moment eigentlich gut aus, jedenfalls kann ich den Fehler auch nicht erkennen.

    Unter Umständen kannst Du auch die Funktion '_OOoCalc_BookOpen' aus der UDF 'OOoCalc.au3' von HIER nehmen. (sieht aber im Prinzip nach nahezu identischem Code/Befehlen aus)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (16. September 2016 um 13:13)

  • Danke - habe ich mir mal angesehen - aber mein Syntax scheint in Ordnung zu sein.

    Ich vermute, der Fehler liegt irgend wo bei der Variable arg, weil die Fehlermeldung "failed" und nicht "Syntax Error" lautet, und bei "_blank" und Dateipfad kann man ja nicht viel verkehrt machen . . ..

    Habe alles mögliche ausprobiert (arg[0], Global, Dim, Local), komme aber icht weiter . . .

    Code
    $ser_man = ObjCreate("com.sun.star.ServiceManager")
    $desk = $ser_man.createInstance("com.sun.star.frame.Desktop")
    Global $arg
    $arg = $ser_man.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    $arg.Name = "Password"
    $arg.Value = "abc"
    Local $x
    $x = $desk.loadComponentFromURL("file:///D:/Datei.ods", "_blank", 0, $arg)
    ;          ^ ERROR
    ;            The requested action with this object has failed.
  • Hi

    Vielleicht funktioniert ja folgendes:

    AutoIt
    Local $ser_man = ObjCreate("com.sun.star.ServiceManager")
    Local $desk = $ser_man.createInstance("com.sun.star.frame.Desktop")
    Local $arg[1]
    $arg[0] = $ser_man.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
    $arg[0].Name = "Password"
    $arg[0].Value = "abc"
    Local $x = $desk.loadComponentFromURL("file:///d:/Datei.ods", "_blank", 0, $arg)

    ist allerdings ungetestet

    mfg
    Zeitriss

  • Tut :klatschen: Herzlichen Dank!!!

    Woran lag's?

    Ich vermute mal, an der Variablendeklaration:

    Code
    Local $arg[1]
    $arg[0] = $ser_man.Bridge_GetStruct( . . .

    Damit hatte ich mich auch beschäftigt, erhielt aber nur Fehlermeldungen.

    Schöne Grüße,
    Uwe

    Einmal editiert, zuletzt von Starszy (16. September 2016 um 17:46)

  • Hi nochmals,

    Im Original erfolgt direkt eine Zuweisung ohne vorherige Variablendefinition . . . das könnt's sein.

    Nein, es ist egal ob die Varriable gleichzeitig zugewiesen wird oder nicht.

    Ich vermute, der Fehler liegt irgend wo bei der Variable arg

    Die Variable $arg ist ein Array mit den PropertyValue-objekten (Eigenschaften).
    Wenn es nicht als Array mitgegeben wird schlägt der Aufruf der Funktion .loadComponentFromURL() fehl, da sie einen anderen Datentyp erwartet.

    mfg

    Zeitriss