Frage von Spinbad123, 91

VBA, kann mir jemand helfen?

Hallo zusammen,

ich möchte gerne VBA lernen und würde gerne dort ein Makro schreiben.

Es soll einfach nur eine Tastenfolge abspielen. Folgendes soll das Makro machen ALT+W, TAB, Leertaste, TAB, TAB, Pfeilhoch, TAB, 10 mal Pfeilrunter, TAB, TAB, F, TAB, TAB, Pfeilrechts, Leertaste

Klingt komisch, ist aber so :D

Wie kann ich das dort erstellen?

Kann mir jemand Tipps geben, wo ich VBA kostenfrei lernen kann?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von merkurus, 52

Also zuerst mußt du mal in Word die Registerkarte "Entwicklertools" anzeigen lassen.
Falls das nicht schon ist. Mußt du folgendermaßen vorgehen.

Anzeigen der Registerkarte "Entwicklertools"

Klick auf Registerkarte Datei. --
Klicken Sie auf Optionen. --
Klick auf Menüband anpassen --
Unter Menüband anpassen und unter Hauptregisterkarten das Kontrollkästchen Entwicklertools aktivieren

Ein Makro wird erstellt unter Entwicklertools -- Makros -- Erstellen

Dein Makro würde also etwa wie folgt aussehen.

Sub Makro1()
'
SendKeys ("%w")
SendKeys ("{TAB}")
SendKeys Chr(32)
SendKeys ("{TAB 2}")
SendKeys ("{UP}")
SendKeys ("{TAB}")
SendKeys ("{DOWN 10}")
SendKeys ("{TAB 2}")
SendKeys ("{RIGHT}")
SendKeys Chr(32)
'
End Sub


Kommentar von merkurus ,

Ich hab noch ein bisschen was vergessen.
Nachfolgend eine kleine Ergänzung

Sub Makro1()
'
SendKeys ("%w")
SendKeys ("{TAB}")
SendKeys Chr (32)
SendKeys ("{TAB 2}")
SendKeys ("{UP}")
SendKeys ("{TAB}") SendKeys ("{DOWN 10}")
SendKeys ("{TAB 2}") SendKeys ("F") SendKeys ("{TAB 2}") SendKeys ("{RIGHT}") SendKeys Chr (32) ' End Sub

Aber es geht ja erst mal ums Prinzip.
% bedeutet also die Alt-Taste
Chr (32) steht für die Leertaste. Man könnte auch schreiben: SendKeys (" ")
Die Zahl hinter TAB z.B. würde halt bedeuten. So oft wird die Taste gedrückt.

Antwort
von Ninombre, 66

Application.SendKeys "^i" z.B.

Was soll damit aber bezweckt werden? Es wäre sehr unelegant, über Tastaturkürzel mit VBA etwas zu steuern. Wenn Du mit Pfeil nach oben bspw auf eine andere Zelle gehen willst, dann lässt sich das auch direkt mit VBA lösen.

Kommentar von Spinbad123 ,

Ich möchte in einem Programm, welches auf meiner Arbeit genutz wird, etwas "Automatiesieren". 

Genau diesen Ablauf mache ich am Tag gefühlt 1000 mal und im Normalfall muss man immer mit der Maus "klicken". 

Ich möchte damit das alles einfacher und auch schneller machen!

Application.SendKeys "^i" klingt zwar richtig, aber ich bin komplett neu und habe noch nie ein Makro mit VBA selber gemacht.

Danke :D

Kommentar von Ninombre ,

Ok, das klingt nachvollziehbar. Du musst allerdings von Excel zu diesem anderen Programm kommen. Ansonsten gehen die Eingaben nur an excel, was dir nichts bringt. Dafür wäre schon notwendig zu wissen, was gesteuert werden soll 

Antwort
von Suboptimierer, 65

Muss es VBA sein?

Für solche Aufgaben empfehle ich AutoIT oder wenigstens VBScript mit WScript.Shell.SendKeys. → http://social.technet.microsoft.com/wiki/contents/articles/5169.vbscript-sendkey...

Ich glaube nicht, dass man diesen Befehl in VBA nutzten kann. Du kannst es ja mal ausprobieren.

Kommentar von Spinbad123 ,

Da ich auf der Arbeit keine Programme Insterlieren darf, muss es VBA sein, da es in Word und somit auf jeden PC vorhanden ist.

Danke

Kommentar von Suboptimierer ,

VBScript muss man nicht installieren. Kommt mit Windows mit.

Es scheint allerdings auch in VBA zu funktionieren, wie Ninombre schreibt.

Kommentar von merkurus ,

Installieren muß man das nicht. Aber Aktivieren. Sonst geht da nichts. Ist aber anzunehmen, das so was in einer Firma für Progis genutzt wird.

Antwort
von Garfield0001, 46

Erklär uns doch mal das, was du täglich so oft machen musst.
Welches Programm, welche Menüs, welche befehle an Ende tatsächlich ausgeführt werden. Zb "Silbentrennung soll angeschaltet werden" oder "wähle für die Zelle zwei Zeilen unter mir das Format "fett" aus

Antwort
von maximilianus7, 31
Kommentar von Ninombre ,

Ich denke man sollte noch deutlich sichtbar hier schreiben, dass dieser Link absolut passende Tipps gibt. Du (FS) hast zwar nicht geschrieben, um welches Programm es geht, aber zumindest mit den Windows-eigenen, wie Notepad, klappt es über diesen Weg. Das auf der Seite genannte Beispiel mit dem Taschenrechner geht zwar bei mir nicht, wenn ich Notepad nehme allerdings problemlos

Sub test()
Dim ReturnValue, I
ReturnValue = Shell("notepad.EXE", 1)    ' Run Calculator.
AppActivate ReturnValue     ' Activate the Calculator.
For I = 1 To 100    ' Set up counting loop.
    SendKeys I & "{+}", True    ' Send keystrokes to Calculator
  Next I    ' to add each value of I.
SendKeys "=", True    ' Get grand total.
SendKeys "%{F4}", True    ' Send ALT+F4 to close Calculator.
End Sub

Bei anderen Programmen muss man den kompletten Pfad zur exe einfügen. Da habe ich jetzt keine explizite Steuerung ausprobiert, dass man also wirklich etwas in der Anwendung tut, aber öffnen und schließen funktioniert, wenn man das obige Script laufen lässt

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten