Excel/Outlook:
Autohotkey fügt aus dem Zwischenspeicher (STG + V) eine Tabelle aus Excel
mit einem gespeicherten Textbaustein aus Outlook
als Antwort in eine offene E-mail zusammen.
Im Anschluss steht die Excel-Tabelle (5-100 Zeilen und 12 Spalten) mitten im HTML formatierten Text.
Das klappt recht gut.
Der Textbaustein wird durch das langsame Tippen der ersten 4 Zeichen plus {NumpadEnter} eingefügt.
Die 4 Zeichen können wahlweise sein
++ 0 {NumpadEnter}
++ 1 {NumpadEnter}
++ 2 {NumpadEnter}
++ 3 {NumpadEnter}
Der Anfang des Tagesdatums für Ferienbeginn bestimmt die Zahl und wird im Textbaustein manuell angepasst.
Daraus wurde...
Code: Select all
~^Numpad0::
#IfWinActive, ahk_class rctrl_renwnd32 ; AHK-Code nur in Outlook ausführen/ahk_class zu finden über Window Spy
SendInput {NumpadAdd}
Sleep 600
SendInput {NumpadAdd}
Sleep 600
SendInput {Space}
Sleep 600
; Hier die Zahl 0/1/2/3 entsprechend anpassen
; SendInput 0
; SendInput 1
SendInput 2
; SendInput 3
Sleep 600
SendInput {NumpadEnter}
; ------------------------------------------------------------------------------------------------
; [A] Bewege nun den Cursor an die richtige Stelle für die Excel-Tabelle / Excel mit (Auto)
; ------------------------------------------------------------------------------------------------
SendInput {Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Down}
; ------------------------------------------------------------------------------------------------
; [B] Einbau für die Idee mit Abfrage nach (Auto) im Zwischenspeicher
; Hier passe ich SendInput mit dem Löschen der Zeilen noch an - wenn (Auto)-Auswertung klappt
; ------------------------------------------------------------------------------------------------
; Bewege nun den Cursor an die richtige Stelle für die Excel-Tabelle / Excel ohne (Auto) und lösche die 4 Zeilen
SendInput {Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Up}{Delete}{Delete}{Delete}{Delete}{Down}
; ------------------------------------------------------------------------------------------------
; [C] Kopiere die Tabelle formatiert ins Outlook-Fenster und lösche (mit !hy5) das Datum #01.01.2021#
; ------------------------------------------------------------------------------------------------
SendInput ^v {up} {up} !hy4!hy5
SendInput {Up}
; ------------------------------------------------------------------------------------------------
; Jetzt das VBA Script ausführen: "FindeNamen" im Anschreiben mittels ALT+H+Y6
; ------------------------------------------------------------------------------------------------
SendInput {Alt down}
Sleep 200
SendInput HY9{Alt up}
; ------------------------------------------------------------------------------------------------
return
#IfWinActive
Problem:
Im Textbaustein steht ein Absatz über der Tabelle geschrieben,
der nur dort stehen darf, wenn mindestens irgendwo in einer Zelle von der Exceltabelle der Inhalt (Auto) zu finden ist.
Beispiele für Zellen-Einträge: "Hans-Franz (Auto)" und/oder "Frau Müller (Auto)"
D.h. ohne (Auto) braucht es diesen Absatz nicht.
Mein Wunsch wäre es als erstes den Inhalt der Tabelle auswerten.
Wenn (Auto) vorhanden, dann nimm folgenden Code [ A ] - mit dem unveränderten Textbaustein für (Auto) - und springe nach [ C ]
Wenn (Auto) nicht vorhanden, dann nimm anderen Code [ B ] - lösche den entsprechende Absatz (4 Zeilen) - und springe nach [ C ]
Frage:
Weiß jemand, wie man aus dem Zwischenspeicher (Auto) mit Klammern auswertet und
das Ergebnis entsprechend umsetzt nach dem Muster If(Excel=*(Auto);[ A ];[ B ])?
Besten Dank für Eure Unterstützung