die Sache mit der Silbentrennung in Word hat mich schon immer genervt. Mal braucht man sie, mal braucht man sie nicht. Aber um sie ein- und auszuschalten, muss man einen verhältnismäßig komplizierten Weg gehen, den man unter Word 2010 erstmal finden muss. Mit folgendem Schritt-für-Schritt-Befehl von Dragon geht das drachenmäßig einfach:
Dazu wird der Befehlseditor im Befehlscenter/neu/Befehlstyp/Schritt für Schritt geöffnet (Dragaonbefehl: „Befehlscenter öffnen“). Die drei Befehlszeilen werden unten im Befehlseditor im Fenster „Neuer Schritt:“ als Tastenkombination eingefügt. Um die Silbentrennung wieder auszuschalten, ändert man in der dritten Zeile nur das U in ein N und vergibt den neuen Befehlsnamen „Silbentrennung aus“. Speichern nicht vergessen. Der Befehl soll anwendungsspezifisch nur in Microsoft Word funktionieren, deshalb bei Verfügbarkeit den Punkt setzen und bei Anwendung „Microsoft Word“ auswählen. Vermutlich klappt es mit dem Befehl auch in Word 2007. Ich kann das aber nicht testen.
Vielleicht geht es mit einem Skript noch eleganter. Falls ja, mögen andere sich daran versuchen.
Viel Spaß mit der Silbentrennung!
Hans Löhr
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
danke für den Beitrag. Deinem Wunsch entsprechend, hier die Lösung mittels Skript.
Zwischen "Sub Main" und" End Sub" werden die folgenden Zeilen eingefügt:
SendKeys "%s", 1 SendKeys "%u",1 SendKeys "u"
Das ist so einfach, das kann jeder, und das Prinzip ist immer dasselbe, deshalb mal zur Erkärung:
"SendKeys" bewirkt, dass die darauf definierten Tasten gesendet werden, wie der Name schon sagt.
Die Tasten werden immer in Anführungszeichen gesetzt. Einfache Buchstaben werden als einfache Buchstaben eingegeben (bei dem Beispiel braucht man nicht die Großschreibung, aber schaden kann sie wohl auch nicht).
Modifikatoren (Shift - Alt - Control) werden wie folgt eingefügt:
Shift -> & Alt -> % Ctrl -> ^
Hinter der schließenden Klammer kann man ", 1" anhängen, das soll bewirken, dass der darauf folgende Befehl nicht zu schnell ausgelöst wird.
Wenn aber Menüs im Spiel sind, deren Aufruf auf dem Bildschirm sich verzögern könnte (das Bild muss aktiv sein, damit der SendKeys-Befehl darauf zugreifen kann, wie bei der Tastatur), ist es sicherer, zusätzliche Wartezeiten zwischen den einzelnen Befehlen festzulegen, wie folgt (immer in eine eigene Zeile):
Wait 0.5 -> eine halbe Sekunde Wartezeit Wait 1 -> eine Sekunde Wartezeit Wait 0.25 -> eine Viertelsekunde Wartezeit
Das Timing muss man von Fall zu Fall selbst austesten.
Hans, ich würde Dich bitten das Skript zu erstellen und mit dem Rekorder-Befehl zu vergleichen. Mich würde interessieren, welche Unterschiede bestehen.
Danke! Rüdiger
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Zitat von R.WilkeMich würde interessieren, welche Unterschiede bestehen
Hallo Rüdiger,
erst einmal vielen Dank für das Skript und die Instruktionen. Mit deiner Erklärung lassen sich solche einfacheren Skripte gut nachbauen. Der Unterschied zwischen dem Schritt-für-Schritt-Befehl und deinem Skript ist, wie zu vermuten war, die Geschwindigkeit. Ein Skript ist eben noch einmal merklich schneller.
Ein schönes Wochenende!
Hans
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
ich habe das Skript mal für Word 2007 abgeändert. Hierzu muss es zuerst "%Y" anstatt "%s" heißen. Zusätzlich habe ich das Ein - und Ausschalten in einem Skript zusammengefasst. Dazu habe ich mit der gleichen Liste wie im folgenden Link gearbeitet: http://dragon-spracherkennung.forumprofi...2716.html#p2716 Hier gibt es auch Erläuterungen wie man mit Listen arbeitet. Hintergrund: wenn ich ein Makro länger nicht benutze, weiß ich nicht ob "ein" oder "an" als Befehl gewählt habe. Deshalb finde ich die Idee mit einer Liste hierfür sehr gut.
das Skript von Jörg hat natürlich den Charme, dass man für zwei unterschiedliche Befehle nur eine Skript benötigt ganz abgesehen von den Befehlsnamen-Variablen. Der Wermutstropfen ist, dass es nur mit mehr Aufwand programmiert werden kann. Alles in allem wurde wieder einmal der schöne Satz bestätigt: Allein hab ich keine Idee. Aber wenn ein anderer eine hat, habe ich eine bessere.
In diesem Sinn noch einen schönen Samstag!
Hans
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
Völlig richtig, Hans, mein Plan war allerdings, Schritt für Schritt dorthin zu kommen, damit es auch alle verstehen. Also noch mal ein paar Schritte zurück.
Angenommen, wir wollen nun erst einmal die beiden Skripte ineinander führen, um nicht zwei davon zu haben, benötigen wir zunächst eine Liste mit mindestens zwei Einträgen, nämlich:
aus ein
So dass der Befehlsname dann lautet:
Silbentrennung
Wie kann nun im Skript unterschieden werden, welche der beiden Varianten verwendet wurde, so dass damit entsprechend umgegangen wird? - Mit einer sog. If-Abfrage. Im Code sieht das dann zunächst so aus, zum Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SendKeys "%s", 1 SendKeys "%u",1 ' Bis hier ist alles identisch, ab jetzt wird geprüft If ListVar1 = "ein" Then ' ListVar1 ist per Definition der Platzhalter für das aktuelle Element der ersten Liste ' wenn wir zwei Listen hätten, wäre die zweite Liste dann ListVar2 ' die Abfrage prüft, ob das aktuelle Listenelement gleich "ein" ist ' in dem Fall wird die nächste Anweisung ausgeführt ' wichtig ist hier die Syntax, das "Then" muss am Ende der Zeile stehen SendKeys "%u" Else ' hier kommt die Anweisung im gegenteiligen Fall, also wenn ListVar1 ' nicht gleich "ein" ist, hier auch wieder wichtig die Syntax SendKeys "%n" End If ' jede If-Abfrage muss mit End If abgeschlossen werden
So, und wie man von dort zu "Select Case" kommt, und warum, darüber erfahren wir demnächst mehr auf diesem Kanal!
Gruß, Rüdiger
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Zitat von R.Wilkedie beiden Skripte ineinander führen
Hallo Rüdiger,
ich bin ganz stolz, dass ich dank deiner Hilfe nun selbst verschiedene Skripte nachbauen kann. Nun sogar mit Variablen. Dein Skript ist auch optisch sehr elegant. Hier ein Screenshot, wie es fertig aussieht:
Bei mir lautet der Skriptbefehl „Silbentrennung “[/*]
Die Variablen findet man im Dragon-Befehlseditor unter: „Namen_bearbeiten“[/*]
Der Befehl soll anwendungsspezifisch nur in Microsoft Word funktionieren, deshalb im Befehlseditor unter „Verfügbarkeit“ den Punkt bei „anwendungsspezifisch“ setzen[/*]
und bei Anwendung „Microsoft Word“ auswählen.[/*]
Das nach den Anweisungen von Rüdiger Wilke fertige Skript muss zuletzt noch in die Objekt-Bibliothek eingebunden werden.
Dazu im Befehlseditor die Tastenkombination Alt + Enter drücken,[/*]
warten bis sich die Objekt-Bibliothek öffnet,[/*]
den Eintrag suchen: „Microsoft Word 14.0 Objekt Library“ (für Word 2010. Bei Word 2007 hat der Eintrag nach meiner Erinnerung die Nummer 12.0)[/*]
Häkchen vor dem Eintrag setzen und[/*]
mit „okay“ bestätigen.[/*]
Jetzt kann das eine Skript gespeichert und angewendet werden mit den beiden Befehlen: „Silbentrennung ein“ oder „Silbentrennung aus“.
Ein solches Skript kann natürlich mit den nötigen Modifikationen für verschiedene Einsatzmöglichkeiten nachgebaut werden, wenn man die Hotkeys in Word kennt (dazu in Word die Alt-Taste drücken und nachsehen).
Rüdiger und Jörg, es macht einfach Spaß, mit Eurer Hilfe die Einsatzmöglichkeiten des Drachen (Version: Professional 11.5) zu erweitern. Bin schon auf den von dir, Rüdiger, angekündigten Skriptbaustein „Select Case“ gespannt.
Viele Grüße aus dem Dauerregen
Hans
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
Zitat von DioskurDas nach den Anweisungen von Rüdiger Wilke fertige Skript muss zuletzt noch in die Objekt-Bibliothek eingebunden werden.
Lieber Hans,
danke für die freundliche Aufnahme und positive Umsetzung. Allerdings, die Einbindung in die Objekt-Bibliothek von Word ist nicht erforderlich, sonst hätte ich es wohl auch erwähnt. Das wäre nur dann der Fall, wenn man VBA-Skripte erstellen will, also solche, wo man Word auf der Objekt-Ebene ansprechen möchte, aber das ist etwas ganz anderes.
So, die nächsten Schritte folgen demnächst. Wer möchte?
Gruß, Rüdiger
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Zitat von R.Wilkedie Einbindung in die Objekt-Bibliothek von Word ist nicht erforderlich
Nun, Rüdiger, soweit reicht mein Skript-Sachverstand noch nicht: VBA-Skript? ?. Word auf der Objektebene ansprechen? ? Aber mit deiner Hilfe werden ich und andere vielleicht noch dahin kommen. Jedenfalls schadet die überflüssige Einbindung in die Objekt-Bibliothek dem Skript nicht und wenn sie in einem anderen Fall doch einmal erforderlich ist, dann ist sie hier beschrieben.
Gruß, Hans
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
Völlig richtig, Hans. Sie einzubinden, aber nicht zu benötigen, schadet nicht. Umgekehrt schon.
Gruß, Rüdiger
PS: Worin unterscheidet sich das bisherige Skript mit einer Liste in der Form von der vollständigen Lösung, die Jörg präsentiert hat?
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Zitat von R.Wilkedie Einbindung in die Objekt-Bibliothek von Word ist nicht erforderlich
Nun, Rüdiger, soweit reicht mein Skript-Sachverstand noch nicht: VBA-Skript? ?. Word auf der Objektebene ansprechen? ?
hiermit ist gemeint, dass im Silbentrennungsskript "nur" Tastenanschläge simuliert werden. Wenn Du Dir aber die Makros bezüglich Outlook anschaust (siehe link oben) findest Du Zeilen wie: myPane = olToDoBar Hierzu muss man die VBA-Sprache der Anwendung verstehen. Dort werden VBA-Objekte direkt auf der Outlook-Ebene angesprochen. Bitte korrigiert mich, wenn dem nicht so ist.
Dies könnte man eventuell auch hier versuchen. Aber da steht der Aufwand in keinem Nutzen zum Ergebnis. Der Vorteil dabei wäre, dass ein solches Makro sehr wahrscheinlich auch in zukünfigen Versionen von Word ohne Anpassung funktionieren würde.
Mit freundlichen Grüßen
Jörg
PS: das bisherige Skript mit einer Liste in der Form unterscheidet sich von der "vollständigen" Lösung zuerst dadurch, dass die Liste der "vollständigen" Lösung mehr als 2 Variablen hat. Deshalb reicht hier eine einfache if-Schleife nicht mehr aus.
Zitat von JoeBu dass die Liste der "vollständigen" Lösung mehr als 2 Variablen hat
Hallo Jörg,
vielen Dank für die Information. So ganz verstanden habe ich die Sache noch nicht, aber ich bin dabei. Das Skript von Rüdiger enthält ebenfalls eine Liste mit mehreren Variablen. Aber im Skript selbst werden nur zwei zur Auswahl angegeben. Ich hoffe, dass das so richtig ist.
Eine gute neue Woche!
Hans
DPI 15 auf Windows 10 Professional (64-bit) SpeechMike Premium. Intel i7 Core 4x2.67 GHz, 6 GB RAM
Zitat von JoeBu dass die Liste der "vollständigen" Lösung mehr als 2 Variablen hat
Hallo Jörg,
vielen Dank für die Information. So ganz verstanden habe ich die Sache noch nicht, aber ich bin dabei. Das Skript von Rüdiger enthält ebenfalls eine Liste mit mehreren Variablen. Aber im Skript selbst werden nur zwei zur Auswahl angegeben. Ich hoffe, dass das so richtig ist.
Eine gute neue Woche!
Hans
Nein, eben nicht. Die erste Liste enthält nur zwei Variablen, besser Elemente:
aus ein
Lassen wir die Objekte und alles, was damit zu tun hat, erst mal beiseite.
Gruß, Rüdier
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD
Zitat von R.WilkeDie erste Liste enthält nur zwei Variablen
Hallo Rüdiger,
abgesehen davon, dass ich jetzt nicht mehr genau weiß, was du mit der „ersten“ Liste meinst, hier ein Screenshot vom Skript, dass ich nach deinen Anweisungen gebaut habe:
gemäß Deinem Beitrag Nr. 7 weiter oben gehe ich davon aus, dass die Liste dort nur die beiden Element "ein - aus" enthält. Unter dieser Bedingung reicht eine einfache If-Abfrage, weil hierbei nur zwei Fälle zu unterscheiden sind, nämlich entweder wird das Element "ein" verwendet, oder das Element "aus", mehr gibt es nicht. Also kann ich testen, ob entweder das eine oder das andere verwendet wurde, nämlich mit der If-Abfrage, wie Du sie im o.g. Beitrag im Skript eingebaut hast.
Die Zeile:
If ListVar1 = "ein"
testest den Fall, dass genau dieses Element verwendet wurde. Wenn ja, wird die darauf folgende Anweisung ausgeführt. Wenn nicht (und es gibt nur den einen anderen Fall), wird eine andere Anweisung ausgeführt. Das passt hier ganz gut zusammen, da es auch nur genau zwei verschiedene Anweisungen gibt, die in Frage kommen, nämlich Silbentrennung ein oder aus.
Ich hoffe, das ist nun etwas deutlicher geworden, und wenn nicht, bitte ich um Rückfrage. So lange das aber nicht klar ist, braucht man die nächsten Schritte nicht anzugehen. Lernen kann man das am besten, indem man weitere Skripte in dieser Struktur selbst entwickelt. Möglichkeiten dazu gibt es wie Sand am Meer.
Gruß, Rüdiger
_______________________________________
Dragon Professional 16 auf Windows 10 Pro und Windows 11 SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo) HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD