Variable in Text ausgeben

  • VBScript

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von MHAS.

    Variable in Text ausgeben

    Hallo Zusammen,

    ich habe mich vor ein paar Tagen angefangen mit VBS auseinander zu setzen.

    Mein Ziel ist es Arbeitsabläufe zu automatisieren (Tastatureingaben). Es hat soweit ganz gut geklappt doch ich denke, dass es mit Variablen verbessert werden kann.


    Ich würde gerne eine Variable defieneren und diese in Textform an verschiedenen Stellen ausgeben, doch leider scheitere ich hierbei. Könnt ihr mir hierbei bitte weiterhelfen?

    Folgendes habe ich mir gedacht:

    Dim Fenster, F
    Set F = CreateObject("WScript.Shell")
    F.AppActivate "Dokument1 - Microsoft Word"
    Set F = Nothing

    Dim Slot
    Slot = 0/21

    SendKeys "Slot"


    Vorab:
    - Die Ausgabe im Word-Dokument habe ich als Ersatz zum eigentlichen Tool angegeben.
    - Sendkeys war eher ein verzweifelter Versuch :D


    Gruß,
    MHAS

    MHAS schrieb:

    Sendkeys war eher ein verzweifelter Versuch
    Wenn man davon absieht, dass es F.SendKeys heißen müsste (s. MSDN), stellt sich die Frage, was Du denn ganz konkret machen willst. Das alles klingt etwas sehr allgemein. Wenn Du den Wert von Slot in das Word-Dokument drinhaben willst, dann schreib F.SendKeys Slot
    0/21 als Wert für Slot ist ein bisken langweilig, da = 0, ab 1/21 wird's interessanter.

    btw: Konkretisiere bitte den Threadtitel. »Anfänger benötigt Hilfe« ist so aussagekräftig wie »Morgen wird die Sonne aufgehen.«
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Alles klar, dankeschön, ich probiere das morgen auf der Arbeit mal aus.

    Beim Slot handelt es sich in diesem Fall um einen Einbauplatz der in einem Dokumetationstool erfasst werden soll.
    Diese Slot Angabe muss beim Dokumentieren öfter angegeben werden. Durch die Variable wollte ich sicherstellen, dass wenn ich einen anderen Slot angeben muss im Scribt nur eine Angabe ändern muss und nicht mehrere.

    Danke dir schonmal für die Hilfe :). Ich geb morgen Bescheid ob es geklappt hat.


    Gruß,
    MHAS
    Ich hatte doch keine Lust bis morgen zu warten.

    Laut Windows ist ein Fehler in Zeile 9 Zeichen 1
    Fehler: Objekt erforderlich

    Dim Fenster, F
    Set F = CreateObject("WScript.Shell")
    F.AppActivate "Dokument1 - Word"
    Set F = Nothing

    Dim Slot
    Slot = 0/21

    F.SendKeys Slot


    Bzw. müsste es nicht

    Slot.SendKeys

    heißen?

    Das F war ja vorhin nur für das Fenster.

    Bei Slot.SendKeys lautet die Fehlermeldung Objekt erforderlich: '0'

    Visual Basic-Quellcode

    1. Dim Slot
    2. Slot = 0/21

    Slot ist irgendeine Variable (kein Objekt, da nicht mit Set markiert. 0/21 ist eine (Be)Rechnung => Wert von Slot ist 0 durch 21, also 0
    Da Null eine Zahl, aber kein Objekt ist, kann die Methode SendKeys nicht darauf angewandt werden. SendKeys erfordert ein WShell-Objekt, also bei Dir F. Auf F kann SendKeys angewandt werden.

    Der Punkt ist nur, dass Du mit Set F = Nothing Deinen Objektbezug verlierst und auf ein nichtexistentes Objekt (will heißen: auf Nothing) kann man nunmal keine Objektmethode anwenden. Schmeiß die Zeile Set F = Nothing raus und fertig ist der Lack.

    btw: bitte CodeTags verwenden und nicht den Code im Fließtext "verstecken"
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ach das war mein Fehler. Okay vielen Dank dir. Funktioniert jetzt.

    Hab es nun so abgeändert, da ich gerne eine seperate Variable hätte:


    Visual Basic-Quellcode

    1. Dim Fenster, F
    2. Set F = CreateObject("WScript.Shell")
    3. F.AppActivate "Dokument1 - Word"
    4. Set F = Nothing
    5. Dim Slot, S
    6. Set S = CreateObject("WScript.Shell")
    7. Slot = "0/21"
    8. S.SendKeys Slot
    Hm, ok. Wenn Dir was daran liegt. Einen Vorteil bringt es Dir in der Konstellation allerdings nicht. F und S sind jetzt beides Wscript.Shell-Objekte. Ob Du nun mit einem davon alles machst oder für jede WSH-Methode eine eigene Instanz verwendest, macht funktionell keinen Unterschied, aber erhöht im weiteren Verlauf die Unübersichtlichkeit. F wird ja durch die AppActivate-Methode nicht abgeändert oder "verbraucht". Von daher besteht kein inhaltlicher Unterschied zwischen F und S. Aber: Dein Code, Deine Entscheidung.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Alles klaro, danke dir.

    da werden bestimmt noch 10 Variablen oder mehr dazu kommen, die sich dann auch auf ca. 200 Zeilen verteilen werden.

    für mich wären dann einzelne Variablen die nur für jeweils ein Befehl stehen übersichtlicher.

    Das Thema kann gerne geschlossen werden, alles hat funktioniert :).

    Danke nochmal.

    Gruß,
    MHAS