Probleme #setclipboard in word einfügen

Anwenderaustausch zur PhraseExpress Makroprogrammierung
gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Probleme #setclipboard in word einfügen

Post by gerde » 04 Feb 15, 21:33

Hallo,

ich wollte folgendes machen. Über den Befehlt

Code: Select all

{#setclipboard {#input -head Name der Frau -single}}
einen Text aus der Zwischenablage einfügen. Weder in einem normalen Textbaustein noch in einem RTF formatierten Textbaustein funktioniert das Ganze. Das Fenster geht auf, ich kann die Zwischenablage auswählen, aber in Word wird nichts eingefügt.
Bestimmt mache ich etwas falsch. Danke für die Hilfe.

Technical Support
Posts: 2798
Joined: 10 Feb 06, 22:23

Post by Technical Support » 05 Feb 15, 09:35

#setclipboard brauchen Sie in diesem Fall überhaupt nicht.
Der #input reicht um die Eingabe in das Zielprogramm einzufügen: {#input -head Name der Frau -single}

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 05 Feb 15, 10:25

@Technical Support:
gerde möchte einen Eintrag aus der Systemzwischenablage übernehmen und diesen dann an eine Zielanwendung weitergeben...

ps

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 05 Feb 15, 10:30

Hallo, gerde,
um Einträge aus der Systemzwischenablage zu übernehmen und an eine Zielanwendung weiterzugeben bietet PhraseExpress mehrere Möglichkeiten.

Vorbedingungen für die nachfolgenden Beispiele:
VOR Ausführung der Testphrase ist ein »Name der Frau:« (z.B. Emma) mit Strg-c in die Zwischenablage kopiert,
für die Beispiele 2 und 3 muss der Systemzwischenablage in PhraseExpress ein Autotext zugeordnet sein -
in meinem Beispiel ist dies ##zwa

Zum Testen können Sie folgende Phrase verwenden:
1 {#input -head Name der Frau: -single -required}
2 {#insert ##zwa -item 1}
3 {#formphrasecombo -text Name der Frau: -source ##zwa}

Hinweise zu den Varianten
1. Übernahme des Zwischenablage-Inhalts mit dem Eingabeformular des #input-Makros
unter Verwendung des kleinen Zwischanablage-Symbols rechts am Eingabefeld:
{#input -head Name der Frau: -single -required}

Der Name kann frei eingegeben oder aus der Zwischenablage ausgewählt werden.

2. Direkte Übernahme eines Zwischenablage-Inhalts:
{#insert ##zwa -item 2}
Bedingung:
Die "Eintragsposition" x (-item x) des gewünschten Zwischenabage-Eintrags muss bekannt sein
(der zuletzt einkopierter Zwischenablage-Eintrag ist -item 1, vorletzter -item 2, usw.).

3. Übernahme des Zwischenablage-Inhalts aus der Auswahlliste des #formphrasecombo-Makros:
{#formphrasecombo -text Name der Frau: -source ##zwa}

Der Name muss aus der Auswahliste entnommen werden, er kann nicht abgeändert oder frei eingegeben werden.
Formularmakros werden von PhraseExpress beim Phrasenablauf vorrangig z.B. vor #input-Makros ausgeführt.

Peter Stotz

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 05 Feb 15, 20:23

Hallo Peter,

vielen Dank für die Tipps. Jetzt funktioniert es gut. Ich kopiere als erstes die Elemente, die ich brauche aus der Mail und starte dann den entsprechenden Textbaustein. Teilweise habe ich das Ausfüllen über #input erledigt, teilweise über ein Formular. Die Varianten 2 und 3 muss ich mir mal in Ruhe anschauen. Ich taste mich langsam ran an das mächtige Werkzeug PhraseExpress!

Danke auch für den Tipp mit den Erklärungen, aber hier gehts schon um den Auftrag. :-)

Allerdings sind jetzt noch ein paar kleine Dinge aufgetaucht.

1. Gibt es einen ShortCut um die Zwischenablage schnell zu leeren? Am besten bevor ich die Daten aus der Mail kopiere. Sonst wird es schnell unübersichtlich.

2. Am Ende des Word Dokuments wollte ich noch den Befehl Speichern unter einsetzen.

Code: Select all

{#savedlg -title Speichern unter -defext docx -deffilename {#input -head Speichern unter -single} -initdir D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015}
Der Dialog öffnet sich auch, aber es wird nichts abgespeichert. Dafür wird der kompelette Pfad ins Word Dokument geschrieben.??
D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\Test.docx

Die Verschachtlung mit #input habe ich deswegen gemacht, weil ich Teile aus der Zwischenablage für den Dateiname verwende.
Beispiel: Auftrag 12.1. Max und Cornelia Mütze.docx
Vielleicht kann ich das auch noch etwas automatisieren?

Schön wäre es übrigens auch, wenn ich gleich das entsprechende Word Dokument öffnen könnte. Das hat schon funktioniert, aber ich muss dem Curser an eine bestimmte Stelle springen lassen. Das habe ich noch nicht hinbekommen.

Danke schon jetzt für die Hilfe. Ich würde ja gerne mal einen Kaffee springen lassen.

Viele Grüße
Gerd

Klein
PhraseExpress Expert
Posts: 208
Joined: 24 Mar 14, 16:11

Post by Klein » 05 Feb 15, 20:46

gerde wrote:... 1. Gibt es einen ShortCut um die Zwischenablage schnell zu leeren? Am besten bevor ich die Daten aus der Mail kopiere. Sonst wird es schnell unübersichtlich. ...
Das wurde schon anderer Stelle hier nachgefragt. viewtopic.php?f=147&t=13683&p=43842#p43714 Leider wurde da bisher nichts geändert.

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 06 Feb 15, 09:48

Guten Morgen, miteinander!
Zu Punkt 1:
Gibt es einen ShortCut um die Zwischenablage schnell zu leeren?
Zwischenablage-Einträge lassen sich noch(?) nicht über einen Phrasenbefehl löschen (hierzu meine Grüße @klein und das PhraseExpressTeam...). Für PhraseExpress11 sind aber schon einige interessante Erweiterungen bezüglich der Verwendung der Zwischenablage angekündigt...

Eine Behelfslösung könnte sein, alle Einträge durch eine "Löschphrase" mit Leerzeichen zu überschreiben.
Dann sieht die Zwischenablage immerhin schön aufgeräumt aus und lässt sich wieder gut verwenden...
Ich verwende dazu folgende Phrase, die ich mit einem Hotkey starte:

Code: Select all

{#loop {#setphrase -description   -content   -autotext -folder ##zwa} -count 20}{#balloon -title System-Zwischenablage gelöscht! -text System-Zwischenablage überschrieben!}
Bitte beachten: nach -description und -content sind jeweils 3 Leerzeichen, der Autotext für meine Zwischenablage ist ##zwa,
die Anzahl der Schleifendurchläufe 20 (=zwa-Einstellung maximale Anzahl der Einträge) können Sie anpassen.

Zu Punkt 2
Sie müssen #SAVEDLG mit #OUTPUT kombinieren {#OUTPUT -target {#SAVEDLG ... }} siehe hier
http://www.phraseexpress.com/docs10/07/ ... tm#opendlg
das entsprechende Word Dokument öffnen
Testen Sie mal
{#RUN -file "x:\pfad\Dateiname.docx"} oder {#OPEN x:\pfad\Dateiname.docx}

Peter Stotz

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 06 Feb 15, 21:17

Hallo,

das mit dem Öffnen klappt gut. Mit dem Speichern leider noch nicht. Merkwürdig ist auch, wenn ich auf das letzte Makro am Ende des Textbaustein einen Doppelklick mache, um es zu bearbeiten, springt der Curser automatisch auf den Anfang im Textbaustein.
Da muss ich mal schauen woran der Fehler liegt.

Ich habe jetzt noch etwas anderes probiert, nämlich gleich noch ein zweites Dokument (Deckblatt) zu öffnen und mit Variablen zu füllen. Das funktioniert auch schon ganz gut. Allerdings hakt es noch an der einen oder anderen Stelle. Ich bin jetzt mal eine Woche im Urlaub und würde mich noch einmal danach melden.

Schönes Wochenende
Gerd

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 27 Feb 15, 12:53

So ich habe wieder Zeit gefunden, weiter zu machen.

Ich stehe immer noch vor dem Problem mit dem Speichern des Dokuments. PE öffnet den Dialog, trägt die Daten aus dem Formular auch ein. Angezeigt wird der Speichern unter Dialog mit dem gewünschten Dateinamen. Bis zu dem Punkt passt alles.

Wenn ich jetzt Enter drücke, wird das hier alles in das Worddokument eingetragen, aber nichts gespeichert. {#OUTPUT -target {D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\Deckblatt Mike & Moni Müller FG Andreas.docx}}

Diese Befehle verwende ich am Ende des Dokuments:

Code: Select all

{#OUTPUT -target {{#savedlg -title Speichern unter -defext docx -deffilename Deckblatt {#input -head Vorname Mann -single} & {#input -head Vorname Frau -single} {#input -head Gemeinsamer Name nach Hochzeit -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha und / oder Kristin|Manuela|Tim -required } -initdir D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015}}}
Danke schon jetzt für die Hilfe.

admin
Site Admin
Posts: 1995
Joined: 10 Feb 06, 17:31

Post by admin » 27 Feb 15, 14:25

Probieren Sie einen kürzeren Dateipfad und ohne Leerzeichen.

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 27 Feb 15, 15:05

Leider keine Änderung.

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 27 Feb 15, 18:51

@gerde
stehe immer noch vor dem Problem mit dem Speichern des Dokuments
Laut Handbuch gilt folgendes:
Ausgabe eines Textes in eine Datei
Die Makrofunktion {#OUTPUT -target d:/data/test.txt -content Text} speichert den unter -content angegebenen Text in eine Datei mit dem Namen/Zielpfadinto, wie unter -target angegeben.
Also NICHT das Dokument, sondern der nach -content angegebene Text wird gespeichert...

In Ihrem Codebeispiel findet sich kein -content Text - vermutlich haperts deswegen... Testen Sie doch 'mal:
{#OUTPUT -target {{#savedlg -title Speichern unter -defext docx -deffilename Deckblatt {#input -head Vorname Mann -single} & {#input -head Vorname Frau -single} {#input -head Gemeinsamer Name nach Hochzeit -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha und_oder Kristin|Manuela|Tim -required } -initdir D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015}} -content xxxxxxxxx}

Vermutlich wollen Sie aber eigentlich ein WORD-Dokument phrasengesteuert speichern.
Der Dialog "Speichern unter" wird bei WORD mit F12 - also in einer PhraseExpress-Phrase einfach mit {#F12} aktiviert.

Peter

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 03 Mar 15, 12:50

Ja, genau das ist mein Ziel. Das Word Dokument abspeichern mit Elementen, die ich vorher eingegeben habe. (Vorname, Nachname, Fotograf) Das ganze auch noch in ein bestimmtes Verzeichnis. Aber ehrlich, ich komme an der Stelle nicht weiter.
Wenn ich mit #F12 arbeite, wie kann ich dann den Ordner und den Dateinamen eintragen?

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 03 Mar 15, 16:29

Hallo gerde,
nachdem durch die Phrase alle Eingaben in ein WORD-Dokument eingetragen wurden, einfach noch F12 und die Dateispezifikation (Laufwerk, Pfad, Dateiname, Dateiextension) als Phrasenabschluss angeben, also schematisch so:

{#sleep 1000}{#F12}{#sleep 2000}d:\pfad\dateiname.docx

F12 öffnet das "Speichern unter ..."-Fenster und d:\pfad\dateiname.docx wird in die Eingabezeile für die Dateispezifikation übergeben.
Die sleep-Verzögerungen sind nötig, weil das System für Einfügungen ziemlich viel Zeit benötigt (die Werte sind systemabhängig, vielleicht mit Wert 3000 anfangen und dann reduzieren).
Die betriebssystemabhängigen Regeln für Dateiangaben müssen natürlich eingehalten werden (der Dateiname darf z.B. keines der folgenden Zeichen /:\*<>? enthalten, ggf. Längenbegrenzung, usw.).
Manche Systeme reagieren auch unwirsch auf Leerzeichen im Dateinamen, hier sollte der Unterstrich _ genutzt werden...

Wenn man die Angaben Ihres vorangegangenen Beitrags als Beispiel übernimmt, könnte das insgesamt z.B. so aussehen:

{#settemp -name ##dateispezifikation -content D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\Deckblatt {#input -head Vorname Mann -single} & {#input -head Vorname Frau -single} {#input -head Gemeinsamer Name nach Hochzeit -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha und_oder Kristin|Manuela|Tim -required }.docx}{#sleep 1000}{#F12}{#sleep 2000}{#gettemp -name ##dateispezifikation}

Ich habe im Beispiel das ganze Dateinamengeschnörkel einer temporären Variablen (im Beispiel ##dateispezifikation) zugewiesen, dadurch lässt sich mit {#gettemp -name ##dateispezifikation} die Dateispezifikation auch testweise zur Kontrolle angezeigen.

Peter

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 12 Aug 15, 15:29

Hallo,

ich möchte noch einmal an die obige Thematik anknüpfen. Vielleicht geht es mit der 11er Version auch noch einfacher.

Ich erstelle einen Auftrag in Word und möchte verschiedene Variablen (Datum, Namen, Fotograf) die ich eben eingeben habe, als ganzes in die Zwischenablage einfügen, um dann nur noch, nachdem ich ein neues Verzeichnis erstellt habe, mit Steuerung und V das ganze einfügen.
Der Name des Verzeichnisses und der Dateiname sind vom Aufbau her gleich.
z.B. 1.1. Maxi Müller & Max Müller FG Gerd

Leider komme ich nicht so richtig weiter und habe schon einiges ausprobiert. Hier noch einmal die Phrase.

Code: Select all

{#input -head Vor und Nachname (neuer Familienname) -single} & {#input -head Vor und Nachname Partner -single}

{#input -head Ort der Hochzeit -single -required }					{#calendar -f dd.mm.yyyy -head Datum der Hochzeit -manual}


{#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha und / oder Kristin|Manuela|Tim -required }

Daten vor der Hochzeit

Auftrag verschickt am: {#date} Auftrag unterschrieben erhalten am:  …………………………
{#insert ##Datenb_28102}

{#F12}D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 13 Aug 15, 08:34

@gerde:
Ich habe die Aufgabenstellung so verstanden:
Sie geben mit der Phrase Daten eines Auftrags in eine zunächst leere Word-Datei ein.
Dann wollen Sie diese Datei unter einem Dateinamen speichern, der Teile der Auftragsinformationen beinaltet.

Wenn das Ihr Anliegen ist, wird die Zwischenablage nicht benötigt, weil alle Daten schon direkt verfügbar sind.

Ersetzen Sie den letzten Eintrag Ihrer Phrase '{#F12}D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015'
mit diesem Code:

{#settemp -name ##Dateispezifikation -content D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\{#input -head Vor und Nachname (neuer Familienname) -single} & {#input -head Vor und Nachname Partner -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha und_oder Kristin|Manuela|Tim -required}.docx}{#F12}{#sleep 1000}{#focus Speichern unter}{#gettemp ##Dateispezifikation}

Der Code erzeugt die Dateispezifikation mit Teilen der Auftragsinformation und setzt diese in die Eingabezeile des 'Speichern unter'-Fensters von Word ein.
Sie können die Dateiangabe dann noch prüfen und ggf. sogar editieren und abschließend die Datei speichern.

Alle in der Dateispezifikation angegebenen Verzeichnisnamen müssen dazu schon bestehen.
Das Zeichen / bei einer der wählbaren Fotografen-Angaben ist in einem Dateinamen nicht zulässig (Sie sollten es bei beiden #formcombobox-Aufrufen z.B. mit _ ersetzen).

Peter Stotz

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 13 Aug 15, 10:10

Hallo Peter,

so langsam kommen wir der Sache nähe. 2 Dinge sind jetzt noch für mich wichtig. Erstens muss das Datum am Anfang noch mit stehen. Hier reicht Tag und Monat) Ich habe den Code mal abgeändert, aber es funktioniert noch nicht ganz. Er frage das Datum noch einmal extra ab.

Code: Select all

{#settemp -name ##Dateispezifikation -content D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\{#input #calendar -f dd.mm. -head Datum der Hochzeit -manual}_{#input -head Vor und Nachname (neuer Familienname) -single} & {#input -head Vor und Nachname Partner -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha-Kristin|Manuela|Tim -required}.docx}{#F12}{#sleep 1000}{#focus Speichern unter}{#gettemp ##Dateispezifikation}
Die zweite Sache wäre noch das Verzeichnis. Alle meine Aufträge kommen noch in verschiedene Verzeichnisse nach dem gleichen Schema wie der Dateiname 28.08. Maria & Josef FG Gerd. Kann man das gleich mit einbauen, dass das Verzeichnis angelegt wird? Die andere Idee wäre, dies an die Zwischenablage zu übergeben und dann erstelle ich nur ein neues Verzeichnis und kopiere den Name mit Strg+V rein. Der Shortcut zur Erstellung eines neuen Verzeichnisses ist STRG + SHIFT + N

Das Sonderzeichen habe ich auch geändert.

Danke. Liebe Grüße
Gerd

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 13 Aug 15, 11:42

Hallo, Gerd,
das vorab schon eingegebene Datum der Hochzeit mit Tag und Monat TT.MM wird so übernommen:

Code: Select all

{#datetime -f dd.mm -value {#calendar -f dd.mm.yyyy -head Datum der Hochzeit -manual}}
Aus sortiertechnischen Gründen würde ich aber dennoch dazu raten, das Jahr hinzuzunehmen und das Format JJJJ.MM.TT zu wählen (die Dezimalpunkte können evtl. entfallen):

Code: Select all

{#datetime -f yyyy.mm.dd -value {#calendar -f dd.mm.yyyy -head Datum der Hochzeit -manual}}
Das sieht dann insgesamt so aus:

Code: Select all

{#settemp -name ##Dateispezifikation -content D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\{#datetime -f yyyy.mm.dd -value {#calendar -f dd.mm.yyyy -head Datum der Hochzeit -manual}}_{#input -head Vor und Nachname (neuer Familienname) -single} & {#input -head Vor und Nachname Partner -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha-Kristin|Manuela|Tim -required}.docx}{#F12}{#sleep 1000}{#focus Speichern unter}{#gettemp ##Dateispezifikation}
Die Verzeichnisgeschichte muss ich mir noch ansehen...

Peter

gerde
Posts: 47
Joined: 19 Mar 13, 15:35

Post by gerde » 13 Aug 15, 12:07

Danke Peter. Da ich schon weiter oben in meiner Struktur mit der Jahressortierung beginne, reicht das mit dem Tag und Monat. Das habe ich umgestellt.
Ich bin schon gespannt, ob die etwas einfällt zum Thema Verzeichnis. :-)

Peter Stotz
PhraseExpress Expert
Posts: 920
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 21 Aug 15, 16:49

Jetzetle:
Wenn die folgende Phrasensequenz aus einer Word-Datei heraus aufgerufen wird, wird das Dokument gespeichert.
Datei-Unterverzeichnis-Name und Dateiname werden dazu aus Benutzereingaben zusammengefügt, das Verzeichnis wird neu erstellt.
Der Ablauf dauert ein paar Sekunden, aber funktioniert - bitte nicht "dazwischenklicken"...

Code: Select all

{#settemp -name ##Ordnername -content {#datetime -f dd.mm -value {#calendar -f dd.mm.yyyy -head Datum der Hochzeit -manual}}_{#input -head Vor und Nachname (neuer Familienname) -single} & {#input -head Vor und Nachname Partner -single} FG {#formcombobox -text Fotograf -items Gerd Edler|Tobias|Andreas|Sascha-Kristin|Manuela|Tim -required}}{#F12}{#sleep 500}{#focus Speichern unter}{#loop {#SHIFT -chars {#TAB}} -count 6}{#enter}D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015{#sleep 500}{#enter}{#CTRL {#SHIFT -chars n}}{#sleep 500}{#gettemp ##Ordnername}{#sleep 500}{#enter}{#esc}(* *){#settemp -name ##Dateispezifikation -content D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\{#gettemp ##Ordnername}\{#gettemp ##Ordnername}.docx}{#F12}{#sleep 500}{#focus Speichern unter}{#sleep 500}{#gettemp ##Dateispezifikation}{#enter}
Phrasenfunktion:
Der Phrasenstart erfolgt in der WORD-Datei.
Die Verzeichnisangabe ist bei Bedarf für andere Anwendungen anpassbar.
Zuerst wird in D:\Eigene Dateien\Office2015\fotografieren24\Aufträge 2015\ ein neuer Unterordner erstellt und benannt, ab der Kommentarmarkierung (* *) wird der Dateiname zusammengefügt und die Worddatei gespeichert.
Zum fehlerfeien Ablauf muss die angegebenene Verzeichnispfad-Vorgabe existieren.

Bei Verwendung anderer Programm-Versionen muss die Phrase vielleicht angepasst werden -
ich nutze Win 8.1., WORD2013, PhraseExpress 11.0.114
Auch die sleep-Werte sind vermutlich systemabhängig...

Peter

Post Reply