Die erste Wahl beim Drucken des Inhalts dieses LOOPs geht in jedem Fall über die PDF-Version dieses Skripts.
Wer etwas mehr Wert darauf legt, dass der Ausdruck möglichst exakt so aussieht, wie die Inhalte hier im Browser, der kann zu dieser Bastel-Lösung greifen.
Die Bastel-Lösung ist aus der Not heraus entstanden, weil die PDF-Export-Funktion in einem anderen LOOP aus unerklärlicher Weise nicht funktionierte, aber dennoch kurzfristig ein PDF erstellt werden musste.
Das folgende AutoIt-Skript ruft nachheinander alle Seiten des Inhaltsverzeichnisses im Browser auf, macht einen Screenshot von den verschiedenen Teilen der Seite, und fügt diese in ein Word-Dokument ein.
So geht es halt auch, dauert nur etwas länger. Und wer vielleicht aus dem Bereich der Webprogrammierung schon immer mal ein praktisches Beispiel für DOM-Manipulation im Browser haben wollte: Das Skript macht ausgibig Gebrauch davon!
#include <INet.au3>
#include <_HTML.au3>
#include <IE.au3>
#include <Word.au3>
#include <MsgBoxConstants.au3>
; ================================================================
; AutoIt-Skript
; zum Extrahieren des Content eines LOOP (http://loop.oncampus.de).
; ----------------------------------------------------------------
; Andreas Wilkens im November 2014
; aw@dozaw.de
; ----------------------------------------------------------------
; Die einzelnen Webseiten werden im Internet Explorer (IE) dargestellt
; und mit Hilfe von FireShot wird ein Screenshot von bestimmten
; Seitenteilen angefertigt. Dabei werden alle Nicht-Content-Inhalte
; zuvor per DOM-Manipulation im Browser ausgeblendet (Navigationselemente,
; Header, Footer, Sidebar links und rechts)
; Der Screenshot wird über die Windows-Zwischenablage in ein
; Word-Dokument eingefügt.
; Der User kann das Word-Dokument am Ende nach belieben ändern (z.B.
; formatieren) und abspeichern, oder auch als PDF exportieren.
; ================================================================
;
; Diese Software ist noch im Teststadium.
; Der Autor übernimmt keine Garantie für die Funktionsfähigkeit.
; Der Autor haftet nicht für Schäden, die durch die Ausführung dieser
; Software entstehen.
; Jegliche Verwendung geschieht auf eigene Gefahr.
;
; ================================================================
; Diese Software wurde entwickelt und getestet unter
; Microsoft Windows 7 Professional, 64 Bit
; AutoIt Version 3.3.12.0
; Internet Explorer Version 11.0.9600.17420
; FireShot for Internet Explorer v.0.98.63
; Microsoft Word Version 14.0.7128.5000, 64 Bit, aus dem
; Microsoft Office Professional Plus 2010 Paket
; ================================================================
;
; Diese Software ist freie Software.
; Sie darf beliebig verwendet, verändert, veröffentlicht und
; weitergegeben werden.
;
; ================================================================
Opt("SendKeyDelay", 0)
; Mit ESC wird die Ausführung des Skripts sofort beendet.
; Es erfolgt keine weitere Rückfrage.
HotKeySet("{ESC}", "Terminate")
Func Terminate()
MsgBox( 0, "", "Skriptausführung beendet." )
Exit
EndFunc ;==>Terminate
; -------------------------------------------------------------------------
; Wenn $VERBOSE = True gesetzt ist, dann erfolgen beim Start des Skripts
; eine Reihe von Rückfragen und Auswahlmöglichkeiten für den User. Zum
; Testen sei dies unbedingt empfohlen!
; Bei $VERBOSE = False fängt das Skript sofort an zu arbeiten. Es werden
; dann die vorgegebenen Belegungen der Variablen unverändert übernommen.
Local $VERBOSE = True
; -------------------------------------------------------------------------
; Noch einige Variablen, die später benutzt werden.
Local $oIE ; Für den Internet Explorer
Local $hIE_Window_Handle
Local $oWord ; Für Word
Local $hWord_Window_Handle
Local $TIMEOUT_SECONDS = 3
Local $result ; Für Rückgabewerte aus MsgBox oder InputBox
; -------------------------------------------------------------------------
If ($VERBOSE) Then
$result = MsgBox( $MB_OKCANCEL, "Word schließen","Es darf keine Microsoft Word Anwendung geöffnet sein." & @CRLF & @CRLF & "Gegebenenfalls bitte jetzt alle aktiven Word-Instazen schließen." )
If ( ($result <> $IDOK) And ($result <> $IDTIMEOUT) ) Then
; User hat den Cancel-Button gedrückt.
Exit
EndIf
EndIf
; -------------------------------------------------------------------------
; Um alle Links auf dieser Seite geht es.
; Üblicherweise ist dies eine LOOP-Seite mit dem TOC (Table of Contents)
Local $sURL_TOC = "http://vfhcab.oncampus.de/loop/MediaWiki:Loop_toc"
If ($VERBOSE) Then
$sURL_TOC = InputBox("", "Welche Webseite ist der Ausgangspunkt?" & @CRLF & @CRLF & "Üblicherweise ist dies eine LOOP-Seite mit dem 'Table of Contents'",$sURL_TOC, "", 500)
If (@error <> 0) Then
; User hat den Cancel-Button gedrückt.
; Skript wird beendet.
Exit
EndIf
EndIf
; -------------------------------------------------------------------------
If ($VERBOSE) Then
$result = MsgBox( $MB_OKCANCEL, "IE vorbereiten","Es muss jetzt bereits ein Fenster des Internet Explorers geöffnet sein. Du als User musst dieses Fenster öffnen." & @CRLF & @CRLF & "FireShot muss als AddOn im Internet Explorer installiert sein." & @CRLF & "FireShot muss eingestellt sein auf" & @CRLF & "--> Capture visible Area and" & @CRLF & "--> Copy to Clipboard" & @CRLF & @CRLF & "Bitte FireShot unbedingt testen, da es direkt nach der Installation viele Rückfragen hat. Bei allen Rückfragen mit 'Remember my decision' dafür sorgen, dass sie nicht wieder erscheinen." & @CRLF & @CRLF & "Die LOOP-Seite " & $sURL_TOC & @CRLF & "muss einmal im Internet Explorer geöffnet sein." & @CRLF & "Mit Benutzernamen und Passwort anmelden, falls erforderlich." & @CRLF & "Linke und rechte Sidebar ausblenden.")
If ( ($result <> $IDOK) And ($result <> $IDTIMEOUT) ) Then
; User hat den Cancel-Button gedrückt.
Exit
EndIf
EndIf
; -------------------------------------------------------------------------
If ($VERBOSE) Then
$result = MsgBox( $MB_OKCANCEL, "","Durch drücken der ESC-Taste wird die Ausführung dieses Skripts sofort und ohne Rückfragen beendet.")
If ( ($result <> $IDOK) And ($result <> $IDTIMEOUT) ) Then
; User hat den Cancel-Button gedrückt.
Exit
EndIf
EndIf
; -------------------------------------------------------------------------
; Alle Links dieser Seite ermitteln.
Local $HTML_SOURCE = _INetGetSource($sURL_TOC)
Dim $ALL_LINKS = _HTML_GetAllLinks($HTML_SOURCE)
If Not IsArray($ALL_LINKS) Then
MsgBox( 0, "Fehler", "Es ist ein Fehler beim Ermitteln der Links aufgetreten" & @CRLF & @CRLF & sURL_TOC )
; Das Skript wird beendet
Exit
EndIf
; ================================================================
; Jetzt stehen alle ermittelten Links in $ALL_LINKS.
; Aber es sind noch Links für die Navigation etc. dabei.
; ================================================================
; ----------------------------------------------------------------
; Ein wenig Information ausgeben.
If ($VERBOSE) Then
$result = MsgBox( $MB_OKCANCEL, "Anzahl Links","Auf der Webseite" & @LF & $sURL_TOC & @LF & "gibt es insgesamt" & @LF & UBound($ALL_LINKS) & " Links" )
If ( ($result <> $IDOK) And ($result <> $IDTIMEOUT) ) Then
; User hat den Cancel-Button gedrückt.
Exit
EndIf
EndIf
; ----------------------------------------------------------------
; $START_NO enthält den Index des ersten Links im Array $ALL_LINKS.
; Der Wert dieser Variablen definiert, bei welchem Link später
; mit dem Extrahieren des Content begonnen wird.
Local $START_NO = 4
If ($VERBOSE) Then
Local $sTEXT = "Dies sind die ersten Links auf der Seite '" & $sURL_TOC & "'" & @LF
For $i = 0 To 32
If ($i < UBound($ALL_LINKS)) Then
$sTEXT = $sTEXT & @LF & $i & " : " & $ALL_LINKS[$i]
EndIf
Next
$sTEXT = $sTEXT & @LF & @LF & "Bei welcher Link-Nr. soll gestartet werden? (Die Navigations-Links zu Beginn sollten übersprungen werden.)"
$START_NO = InputBox("Start-Nr.",$sTEXT,$START_NO,"",800,600)
If (@error <> 0) Then
; User hat den Cancel-Button gedrückt.
; Skript wird beendet.
Exit
EndIf
EndIf
; ----------------------------------------------------------------
; $END_NO enthält den Index des letzten Links im Array $ALL_LINKS.
; Der Wert dieser Variablen definiert, bei welchem Link später
; das Extrahieren des Content beendet wird.
; Local $END_NO = UBound($ALL_LINKS) - 1
Local $END_NO = $START_NO + 2
If ($VERBOSE) Then
Local $sTEXT = ""
Local $x
If (UBound($ALL_LINKS) >= 33) Then
$x = UBound($ALL_LINKS) - 33
Else
$x = 0
EndIf
For $i = (UBound($ALL_LINKS) - 1) To $x Step -1
$sTEXT = $i & " : " & $ALL_LINKS[$i] & @LF & $sTEXT
Next
$sTEXT = $sTEXT & @LF & @LF & "Bei welcher Link-Nr. soll beendet werden? (Die Navigations-Links am Ende sollten nicht mit verarbeitet werden.)"
$END_NO = InputBox("End-Nr.",$sTEXT,$END_NO,"",800,600)
If (@error <> 0) Then
; User hat den Cancel-Button gedrückt.
; Skript wird beendet.
Exit
EndIf
EndIf
; -------------------------------------------------------------------------
If ($VERBOSE) Then
$result = MsgBox( $MB_OKCANCEL, "","Die Verarbeitung startet jetzt." & @CRLF & @CRLF & "Dabei klickt das Skript auf den FireShot-Button im Internet Explorer." & @CRLF & "Die Bildschirmkoordinaten für den MouseClick sind im Skript hinterlegt und müssen ggf. angepasst werden. Siehe:" & @CRLF & @CRLF & "Local $FireShot_X = 80" & @CRLF & "Local $FireShot_Y = 66" & @CRLF )
If ( ($result <> $IDOK) And ($result <> $IDTIMEOUT) ) Then
; User hat den Cancel-Button gedrückt.
Exit
EndIf
EndIf
; ================================================================
; Jetzt haben wir alle Links in dem Array $ALL_LINKS.
; $START_NO gibt an, bei welchem Array-Index in $ALL_LINKS wir starten.
; $END_NO gibt an, bei welchem Array-Index in $ALL_LINKS wir enden.
; Dazwischen werden alle Links verarbeitet.
; ================================================================
; -------------------------------------------------------------------------
; Word starten
$oWord = _Word_Create()
$hWord_Window_Handle = WinGetHandle("Microsoft Word", "")
; Für Word-Properties siehe:
; http://msdn.microsoft.com/en-us/library/ff841712%28v=office.14%29.aspx
; Word auf dem Bildschirm positionieren
WinMove( $hWord_Window_Handle, "", 900, 0 )
; Einige Vorbereitungen in Word treffen
Send( "^n" ) ; STRG n --> Neues Dokument in Word
Send( "^e" ) ; STRG e --> Absatz zentrieren
; ================================================================
; Jetzt beginnt die Verarbeitung der gewünschten Links.
; ================================================================
; Schleife über alle zu verarbeitenden Links
For $URL_NO = $START_NO To $END_NO
WinActivate( $hWord_Window_Handle, "" ) ; Dem Word-Fenster den Fokus geben.
Send( "^{Enter}" ) ; STRG Enter --> Neue Seite in Word
; Internet Explorer aufrufen mit URL dieses FOR-Durchlaufs
$oIE = _IECreate( $ALL_LINKS[ $URL_NO ], 0 )
$hIE_Window_Handle = _IEPropertyGet( $oIE, "hwnd" )
; Das Fenster des Internet Explorers in der linken oberen Ecke des
; Bildschirms positionieren, damit der Mausklick auf den FireShot-Button
; weiter unten auch mit den korrekten Koordinaten ausgeführt wird.
; (FireShot hat im IE aktuell keinen Shortcut, es muss also zwingend ein
; Mausklick erfolgen)
_IEPropertySet( $oIE, "left", 0 )
_IEPropertySet( $oIE, "top", 0 )
; Die Breite des Fensters entspricht der Breite des Content.
; Das ist wichtig, da FireShot genau in der Breite des Fensterinhalts aufnimmt.
_IEPropertySet( $oIE, "width", 873 )
; Die Höhe des Fensters ist bewusst klein gewählt. FireShot scrollt bei der Aufnahme
; automatisch und baut das Bild korrekt zusammen.
; Wäre die Höhe hier großer eingestellt, als der Content lang ist, so würde unnötig
; viel leerer Bildschirn aufgenommen werden.
; Vorsicht: weniger als 150 macht hier keinen Sinn.
; Wenn viele Symbolleisten etc. eingeblendet sind, kann auch ein deutlich größerer
; Wert nötig sein.
_IEPropertySet( $oIE, "height", 450 )
; Über diese Koordinaten klickt die Maus auf den FireShot-Button im Internet Explorer.
; Die Koordinaten sind relativ zur linken oberen Ecke des Bildschirms!
Local $FireShot_X = 80
Local $FireShot_Y = 66
; Kurz warten, bis das Bild im Browser korrekt aufgebaut ist.
Sleep( 500 )
; ----------------------------------------------------------------
; ----------------------------------------------------------------
; Ab hier erfolgt die DOM-Manipulation im Browser.
; ----------------------------------------------------------------
; ----------------------------------------------------------------
; Alle div's entfernen, die nicht mit in den Screenshot sollen.
Local $divToBeDeleted = ["header", "navbar1", "navbar2", "pageaudio", "sidebar_left", "sidebar_right", "content_bar", "content_footer", "footer"]
For $j = 0 To (UBound($divToBeDeleted) - 1)
$oDiv = _IEGetObjById($oIE, $divToBeDeleted[$j]) ; Dies ist das betreffende div.
$oDiv.outerhtml = "" ; So wird sein Inhalt aus der Browseranzeige entfernt:
Next
; Einige weitere Variablen, die zum Ermitteln des Contents nötig sind.
Local $sTitle = "" ; Nimmt die ermittelte Seitenüberschrift der URL dieses FOR-Durchlaufs auf.
Local $oDiv; ; Nimmt div-Container auf, um daraus den Content zu ermitteln.
Local $oChildNodes; ; Nimmt alle ChildNodes eines div-Containers auf.
Local $oNode; ; Nimmt genau einen Node auf.
; Die folgenden drei Zeilen dienen dazu, dem Array $HTMLParts die richtige Größe zu geben.
$oDiv = _IEGetObjById($oIE, "mw-content-text")
$oChildNodes = $oDiv.childNodes ; Aus dem div alle childNodes ermitteln
Local $HTMLParts[ $oChildNodes.length + 1 ] ; Für Überschriften und Nodes, die später als Screenshot in Word landen
Local $part = 0;
; ----------------------------------------------------------------
; Jetzt den Seitentitel ermitteln
; Bei "alten" LOOPs steht die Überschrift der Seite in diesem div
$oDiv = _IEGetObjById($oIE, "content_body")
$oChildNodes = $oDiv.childNodes ; Aus dem div alle childNodes ermitteln
For $oNode in $oChildNodes
If (StringInStr( $oNode.outerhtml, '<h1>' ) = 1) or (StringInStr( $oNode.outerhtml, '<h2>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h3>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h4>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h5>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h6>' ) = 1) Then
$sTitle = $oNode.innertext
$HTMLParts[$part] = $sTitle
$part += 1
; Den Inhalt dieses Nodes löschen, da er nicht ein zweites Mal
; verarbeitet werden darf.
$oNode.outerhtml = ""
ExitLoop ; Die For-Schleife sofort verlassen,
; weil hier nicht mehr sinnvoller Inhalt stehen kann.
EndIf
Next ; For $oNode in $oChildNodes
; ENDE: Sonderfall "alte" LOOPs.
; Bei "neuen" LOOPs steht die Überschrift der Seite in diesem div
; Und alle weiteren Nodes dieses div enthalten den Content der Seite.
$oDiv = _IEGetObjById($oIE, "mw-content-text")
$oChildNodes = $oDiv.childNodes ; Aus dem div alle childNodes ermitteln
For $oNode in $oChildNodes
If ( $sTitle = "" ) Then
; Es wurde bislang noch keine Überschrift der Seite gefunden.
; Entweder ist dieser $oNode eine Überschrift,
; oder sein Inhalt kann ignoriert werden,
; weil über der Seitenüberschrift nichts Sinnvolles stehen kann.
If (StringInStr( $oNode.outerhtml, '<h1>' ) = 1) or (StringInStr( $oNode.outerhtml, '<h2>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h3>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h4>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h5>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h6>' ) = 1) Then
; Ja, hier ist die Seitenüberschrift.
; Jetzt die Überschrift extrahieren:
$sTitle = $oNode.innertext
$HTMLParts[$part] = $sTitle
$part += 1
; Den Inhalt dieses Nodes löschen, da er nicht ein zweites Mal
; verarbeitet werden darf.
$oNode.outerhtml = ""
EndIf
Else
; Es wurde bereits die Seitenüberschrift gefunden.
; Jetzt weiter mit allen anderen Inhalten
If ($oNode.innertext = '') Then
$oNode.outerhtml = ''
Else
; Alle HTML-Tags, die Überschriften sind:
If (StringInStr( $oNode.outerhtml, '<h1>' ) = 1) or (StringInStr( $oNode.outerhtml, '<h2>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h3>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h4>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h5>' ) = 1) Or (StringInStr( $oNode.outerhtml, '<h6>' ) = 1) Then
; Überschrift
$HTMLParts[$part] = $oNode.innertext
$part += 1
Else
; keine Überschrift
If Not (StringInStr( $oNode.outerhtml, '<div class="autoit_do_not_print">' ) = 1) Then
$HTMLParts[$part] = $oNode.outerhtml
$part += 1
EndIf
EndIf
EndIf
EndIf
Next ; For $oNode in $oChildNodes
; ----------------------------------------------------------------
; In dem Array $HTMLParts stehen jetzt die aufgetrennten Seitenteile.
; Die Variable $part enthält aktuell die Anzahl der ermittelten Seitenteile.
;
; Wenn ein Feld in $HTMLParts mit einem < beginnt, so handelt es sich un einen HTML-Tag.
; Wenn ein Feld in $HTMLParts nicht mit einem < beginnt, so handelt es sich um eine
; Überschrift. Von Überschriften wird nur der reine Text gespeichert.
;
; $HTMLParts[0] enthält den Titel der in diesem Durchlauf behandelten Seite $ALL_LINKS[ $URL_NO ]
; ----------------------------------------------------------------
; Jetzt jeweils nur einen Teil im Browser darstellen,
; (also ein Feld aus $HTMLParts)
; dann einen Screenshot machen,
; und den Screenshot in Word einfügen.
; ---------------------------------------------------------
; Einfügen der Seitenüberschrift in Word
WinActivate( $hWord_Window_Handle, "" ) ; Dem Word-Fenster den Fokus geben.
Send( $sTitle )
Send( "^l" ) ; STRG l --> Den Absatz linksbündig formatieren. "l" wie Ludwig!
Send( "!1" ) ; ALT 1 --> Dem Absatz "Überschift 1" zuweisen. Ziffer "1"!
Send( "{ENTER}" )
Send( "{ENTER}" )
Send( "^e" ) ; STRG e --> Absatz zentrieren
; Einen Moment abwarten, bis Word mit dem Einfügen fertig ist.
Sleep( 100 )
; -------------------------------------------------------------------------
; Jetzt die Screenshots machen
For $partnr = 1 To ($part - 1)
If Not (StringInStr( $HTMLParts[ $partnr ], '<' ) = 1) Then
; Der aktuelle Teil beginnt NICHT mit einem '<', deshalb muss es eine Überschrift sein.
; Einfügen der Seitenüberschrift in Word
; Dem Word-Fenster den Fokus geben.
WinActivate( $hWord_Window_Handle, "" )
Send( "{ENTER}" )
Send( $HTMLParts[ $partnr ] )
Send( "^l" ) ; STRG l --> Den Absatz linksbündig formatieren. "l" wie Ludwig!
Send( "!2" ) ; ALT 2 --> Dem Absatz "Überschift 2" zuweisen.
Send( "{ENTER}" )
Send( "^e" ) ; STRG e --> Absatz zentrieren
; Einen Moment abwarten, bis Word mit dem Einfügen fertig ist.
Sleep( 200 )
Else
$oDiv.innerhtml = $HTMLParts[ $partnr ]
; Einen Moment abwarten, damit die Inhalte im Browser auch
; korrekt aufgebaut werden können.
Sleep( 500 )
; ---------------------------------------------------------
; Anpassen der Höhe des Browserfensters, damit FireShot
; bei der Aufnahme möglichst nicht scrollen braucht
$oDoc = _IEDocGetObj( $oIE )
; siehe document object http://msdn.microsoft.com/en-us/library/ms535862%28v=vs.85%29.aspx#properties
$oBody = $oDoc.body
; siehe body object http://msdn.microsoft.com/en-us/library/ms535205%28v=vs.85%29.aspx#properties
; Dies ist die Höhe des Content-Teils im Browser:
$bodyHeight = _IEPropertyGet( $oBody, "height" )
; Dies ist die Höhe des Browsers, ohne die angezeigte Webseite.
; Also Titelleiste im Fenster, Menüzeile, Linksleiste, Statusleiste, etc.
; Dieser Wert muss ggf. an den eigenen Browser angepasst werden.
Local $individualBrowserHeight = 107
; Neue Fensterhöhe setzen:
_IEPropertySet( $oIE, "height", $individualBrowserHeight + $bodyHeight )
; ---------------------------------------------------------
; Dem IE-Fenster den Fokus geben
WinActivate( $hIE_Window_Handle, "" )
; Auf den FireShot-Button im Browser klicken.
; Die Koordinaten müssen stimmen!
MouseClick( "left", $FireShot_X, $FireShot_Y )
; Einen Moment abwarten, damit FireShot seine Arbeit tun kann.
Sleep( 1000 )
; ---------------------------------------------------------
; Einfügen des Screenshot in Word
; Dem Word-Fenster den Fokus geben.
WinActivate( $hWord_Window_Handle, "" )
; Auf die Titelleiste des Word-Fensters klicken.
; MouseClick( "left", $WORD_X, $WORD_Y)
Send( "^v" ) ; STRG v --> Inhalt der Zwischenablage einfügen
Send( "{Enter}" )
; Einen Moment abwarten, bis Word mit dem Einfügen fertig ist.
Sleep( 200 )
EndIf
Next ; For $partnr = 1 To ($part - 1)
; ---------------------------------------------------------------------
; Jetzt ist eine einzelne URL aus dem Array $ALL_LINKS abgearbeitet,
; also eine LOOP-Seite ist fertig.
; ---------------------------------------------------------------------
; Das Fenster des IE wieder schließen
_IEQuit( $oIE )
Next ; For $URL_NO = $START_NO To $END_NO
; ---------------------------------------------------------
; Einfügen der Seitenüberschrift in Word
; Dem Word-Fenster den Fokus geben.
WinActivate( $hWord_Window_Handle, "" )
Send( "^{HOME}" ) ; STRG POS1 --> An den Dokumentenanfang springen.
Send( "^l" ) ; STRG l --> Den Absatz linksbündig formatieren. "l" wie Ludwig!
Send( "Quelle: {TAB}" )
Send( $sURL_TOC )
Send( "{ENTER}" )
Send( "{ENTER}" )
Send( "Stand: {TAB}" )
Send( "!D" ) ; ALT SHIFT d --> Das aktuelle Datum einfügen.
Send( "{ENTER}" )
Send( "{ENTER}" )
Send( "Bei Bedarf:" )
Send( "{ENTER}" )
Send( "{TAB}Manuell ein Inhaltsverzeichnis einfügen." )
Send( "{ENTER}" )
Send( "{TAB}Seitenzahlen in Kopf- oder Fußzeile einfügen." )
Send( "{ENTER}" )
Send( "{ENTER}" )
; Einen Moment abwarten, bis Word mit dem Einfügen fertig ist.
Sleep( 200 )
Exit