Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Text in ex. Word-Dokument via Konsole einfügen

Mdl / 7 Antworten / Baumansicht Nickles

Würde gerne über die Konsole, also via Kommandozeilenaufruf, in ein bereits existierendes Word-Dokument (am Anfang) einen Text einfügen. Aktuell nutze ich Word 2007.

Ist dies direkt oder über ein Tool möglich?


So könnte ich, um eine Art Protokoll zu führen, sobald ein bestimmtes Ereignis in der eh schon offene Konsole einfach einen Batch-Befehl aufrufen, z.B. now.bat, der dann in mein Word-File EreignisProtokoll.doc einen neuen Eintrag mit aktueller Zeit einfügt.

Dies würde 1s dauern, also den Arbeitsfluss praktisch nicht beeinträchtigen. Im Gegensatz zum manuellen Aufrufen von Word, Daten eintragen, Abspeichern. Da ist man dann schon wieder raus aus dem was man gerade dabei ist zu tun...

Danke,

Mdl 

bei Antwort benachrichtigen
mi~we Mdl „Text in ex. Word-Dokument via Konsole einfügen“
Optionen

Also das dürfte kniffelig werden, angesichts der recht komplexen internen Struktur einer Word-Datei:

DOCX is written in an XML format, which consists of a ZIP archive file containing XML and binaries

http://forensicswiki.org/wiki/Word_Document_%28DOCX%29

"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
Mdl mi~we „Also das dürfte kniffelig werden, angesichts der recht komplexen internen Struktur einer Word-Datei: ...“
Optionen

Stimmt, aber selber programmieren will ich das nicht. Wäre dann doch zuviel Aufwand für so ein kleines Anliegen. Aber vielleicht gibt es ja schon ein Tool, das das kann..

Vielleicht noch 'ne Idee: Kann man in Word innerhalb eines Dokuments den Inhalt eines .txt-Files anzeigen lassen, also so als wäre der Text in diesem Teil des Dokuments? (Ähnlich wie ein C-Compiler es sieht, wenn an einer Stelle ein #include steht.)

Gruß,

Mdl

bei Antwort benachrichtigen
mawe2 Mdl „Stimmt, aber selber programmieren will ich das nicht. Wäre dann doch zuviel Aufwand für so ein kleines Anliegen. Aber ...“
Optionen
Kann man in Word innerhalb eines Dokuments den Inhalt eines .txt-Files anzeigen lassen

Könntest Du nicht gleich ein TXT-File verwenden? Warum muss es DOCX sein?

Gruß, mawe2

bei Antwort benachrichtigen
Borlander Mdl „Text in ex. Word-Dokument via Konsole einfügen“
Optionen

Die mit Abstand einfachste Lösung wäre ein Anhängen von Text am Dateiende.

Das lässt sich ganz simpel mit
echo "Inhalt" >> datei.txt
realisieren.

Unter Einsatz der Serienbrieffunktion könnte man am Ende dann wieder ein Word-Dokument daraus erstellen.

Gruß
Borlander

bei Antwort benachrichtigen
Mdl Borlander „Die mit Abstand einfachste Lösung wäre ein Anhängen von Text am Dateiende. Das lässt sich ganz simpel mitecho Inhalt ...“
Optionen

Wird mir vielleicht nichts anderes übrig bleiben. Auch das 'Anfügen' an den Anfang ist nicht weiter schwierig:

echo >datei.tmp "Inhalt"
type >>datei.tmp datei.txt
del datei.txt
ren datei.tmp datei.txt

Was meinst Du aber mit der Serienbriedffkt.?

Das bringt mich aber noch auf eine andere Idee:

  Könnte man rel. einfach (in C/C++) eine Art Word-PlugIn schreiben, das im akt. geladenen Word-Dokument am Anfang/Ende einer vorhandenen Textmarke einen Text einfügt. Das PlugIn, das evt. über einen Menüpunkt oder Button-Klick aufgerufen, könnte also eine Fkt. beinhalten

  AddText(char *text_marke, char *text, bool insert_at_begin);

Macht so etwas Sinn? Ist die Implementierung schnell und leicht oder langwierig und kompliziert?
Ich hatte noch nie mit Word-PlugIns zu tun...

Falls das gehen würde, könnte ich via Command-Line-Tool die Daten (öfters in eine Textdatei kopieren und diese dann irgenwann is Word-File importieren... 
 

Gruß,

Mdl

bei Antwort benachrichtigen
Borlander Mdl „Wird mir vielleicht nichts anderes übrig bleiben. Auch das Anfügen an den Anfang ist nicht weiter schwierig: echo ...“
Optionen
Auch das 'Anfügen' an den Anfang ist nicht weiter schwierig:

Wirklich schwierig ist das natürlich nicht, aber schon deutlich komplexer als ein direktes Anhängen an eine bestehende Datei und vor allem bringt Dein Code eine ganze Reihe von möglichen Nebeneffekten nach. z.B.:

  • Risiko eines Datenverlustes wenn die Ausführung zwischen Schritt 3 und 4 unterbrochen wird und das Script anschließend erneut läuft
  • Überschreiben einer ggf. bestehenden Datei datei.tmp
  • Verlust von Dateiberechtigungen, sowie Metadaten wie z.B. dem Erstellungsdatum
Was meinst Du aber mit der Serienbriedffkt.?

Mit der Serienbrieffunktion kannst Du automatisiert Dokumente erzeugen in denen Platzhalter aus einer Datenquelle (u.A. CSV, Excel) befüllt werden.

Könnte man rel. einfach (in C/C++) eine Art Word-PlugIn schreiben, das im akt. geladenen Word-Dokument am Anfang/Ende einer vorhandenen Textmarke einen Text einfügt. Das PlugIn, das evt. über einen Menüpunkt oder Button-Klick aufgerufen, könnte also eine Fkt. beinhalten

Funktionen die direkt aus der jeweiligen MSO-Anwendung ausgeführt werden kannst Du mit VBA (Visual Basic for Applications) erstellen. Von außen kann Word per COM automatisiert werden, dies ist u.a. auch per WSH/VBS möglich.

Gruß
Borlander

Btw.: Das Thema geht doch deutlich eher in die Richtung Programmierung. Ich verschiebe den Thread daher mal.

bei Antwort benachrichtigen
PaoloP Mdl „Text in ex. Word-Dokument via Konsole einfügen“
Optionen

Also ich könnte dir das anbieten, wenn du magst in dem ich ein Tool erstelle das dies per Aufruf Argument erledigt. (Würde allerdings das .Net Framework+Netoffice oder DocX voraussetzen )

Den zeitlichen Aufwand würde ich auf einer durchschnittlichen Maschine hier mit 1-2 Sekunden beziffern wenn es das doc Format sein soll und und irgendwas um 1MS wenn es das docx Format sein soll.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen