AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OLE Word auslesen

Ein Thema von Sidi61 · begonnen am 20. Dez 2014 · letzter Beitrag vom 5. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#1

OLE Word auslesen

  Alt 20. Dez 2014, 23:07
Hallo zusammen,

zum Thema OLE Automation mit Word gibt es ja viele hilfreiche Foreneinträge, zum Auslesen eines Word-Dokuments habe ich bis jetzt leider noch keine brauchbare Lösung gefunden. Ich möchte den Text gern Zeilenweise einlesen ähnlich wie readln bei Textdateien.

Ich schreibe in ein Word-Dokument wie folgt:
Code:
    //Text aus Fehlerbeschreibung in Word-Dokument schreiben
    for i := 0 to DBMemo_Mangel.Lines.Count -1 do
    begin
      //schreibt den Text aus Memo Zeilenweise in das Worddokument, chr(11) sorgt
      //dafür, dass durch Enter eingeleitete neue Zeilen auch im Word übernommen werden
      WordSelection.TypeText(DBMemo_Mangel.Lines[i]+chr(11));
    end;
Das funktioniert soweit ganz gut - nur wie bekomme ich den Text aus Word wieder zeilenweise heraus?

Folgender Versuch führt dazu, dass der gesamte Text am Stück ausgelesen wird
Code:
    WordApp.Documents.Open(Komabe_file);
    WordDoc := WordApp.ActiveDocument;

    showmessage(inttostr(WordDoc.Paragraphs.count)); //zeigt Anzahl Absätze - in diesem Fall 1
    showmessage(worddoc.paragraphs.item(1).range.text); //zeigt den gesamten Text am Stück
    showmessage(WordDoc.range.text); //zeigt ebenfalls den gesamten Text am Stück
Hat jemand eine Idee wie man den Text zeilenweise auslesen kann??

Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: OLE Word auslesen

  Alt 20. Dez 2014, 23:17
"Zeilenweise" geht nicht, da der Zeilenumbruch abhängig von Font und Papierformat vorgenommen wird.
Es sei denn, Du möchtest nach ManualLineBreak suchen (x0A wenn ich mich nicht irre). Dann könnte es reichen, den Text eines Paragraphs in eine Stringliste zu übertragen, und diese dann zeilenweise zu lesen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#3

AW: OLE Word auslesen

  Alt 20. Dez 2014, 23:41
OK - habe ich mir fast gedacht

lese das ganze nun in ein unsichtbares Memo ein und bearbeite es dann von dort aus:

Code:
 WordApp.Documents.Open(Komabe_file);
    WordDoc := WordApp.ActiveDocument;

    for I := 1 to WordDoc.Paragraphs.count do
    begin
      S := WordDoc.Paragraphs.item(i).range.text;
      if pos(chr(11),S) = 0 then Memo1.Lines.Add(S) else
      begin
        while pos(chr(11),S)>0 do
        begin
          Z := copy(S,1,pos(chr(11),S)-1);
          delete(S,1,pos(chr(11),S));
          Memo1.Lines.Add(Z);
        end;
      end;
    end;
Was passiert eigentlich, wenn sich im Dokument zwischen dem Text noch eine Tabelle befindet

Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: OLE Word auslesen

  Alt 21. Dez 2014, 07:53
Wenn ich mich richtig erinnere sind Tabellen wie Bilder, Kopfzeilen etc. eigene Objekte.
Da müßte es auch die zugehörigen Positionswerte geben, damit Du die Tabellen in den Kontext bringen kannst.

Warum nutzt Du ein "unsichtbares Memo"? Ein String oder eine Stringliste ist auf jeden Fall besser geeignet.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: OLE Word auslesen

  Alt 21. Dez 2014, 09:33
Das Memo ist einfach langsamer und dient wohl als Bremse um Word nicht zu stessen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#6

AW: OLE Word auslesen

  Alt 21. Dez 2014, 23:39
OK - Überzeugt, nehme jetzt eine Stringliste

Aber mal was anderes - wenn man ein Word Dokument editiert kann man mit der Eingabe von --- Enter eine Linie erzeugen. Dies gelingt mir mit
WordSelection.TypeText('---'+^M) leider nicht. Gibt es eine Möglichkeit dies auch per OLE Fernsteuerung zu erreichen

Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: OLE Word auslesen

  Alt 22. Dez 2014, 19:48
jetzt wird's komplizierter, da ich diese Kürzel nicht nutze. Eine gute Möglichkeit ist es den Makrorecorder anzuwerfen und dann mal zu schauen, was der mitschreibt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#8

AW: OLE Word auslesen

  Alt 22. Dez 2014, 19:58
habe ich gemacht, das dumme ist nur, solange der Makrorecorder läuft kann ich mit der Methode keine Linie erzeugen

Gruß
Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: OLE Word auslesen

  Alt 23. Dez 2014, 18:07
die drei(?)--- sind ja ein Kürzel für die Linie, dann versuch doch mal heraus zu bekommen wo die Übersetzung stattfindet.
Ich kann Dir im Augenblick leider nicht weiterhelfen, da ich das Word erst nächstes Jahr wieder zur Verfügung stehen habe.

gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#10

AW: OLE Word auslesen

  Alt 23. Dez 2014, 19:28
hm - hast du eine Idee wie ich da am besten vorgehen kann bzw. in welcher Ecke ich da nachschauen muss?

Gruß
Sidi61
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz