VBA, kann mir jemand helfen?

...komplette Frage anzeigen

5 Antworten

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


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von merkurus
07.02.2016, 07:26

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.

2

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Spinbad123
06.02.2016, 19:47

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

0

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 bewerten Vielen Dank für Deine Bewertung

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-sendkeys-method.aspx

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

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Spinbad123
06.02.2016, 19:49

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

0
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Ninombre
07.02.2016, 08:04

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

1

Was möchtest Du wissen?