Announcement

Collapse
No announcement yet.

Word Application zu langsam

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Word Application zu langsam

    Hallo

    Ich möchte in Word eine Tabelle mit diversen Texten füllen. Das geschieht
    momentan über folgende Funktion:

    procedure fillcell(s:string);
    begin
    winword.selection.typetext(s);
    winword.selection.moveright(unit:=12); // nächste zelle
    end;

    Ich habe ein Update des Textes mit folgenden Anweisungen unterbunden:
    winword.Options.CheckSpellingAsYouType := False;
    winword.Options.CheckGrammarAsYouType := False;
    winword.screenupdating := false;

    Leider macht Word nach jedem Einfügevorgang aber noch ein Update aller Anzeigeelemente wie Tabpositionen, Lineale, Steuerelement, Buttons. Der
    ganze Bildschirm flackert davon.

    Hat jemand eine Idee, wie man diese Refresh-Aktionen von Word abstellen
    kann?. Ich wäre auch für jedem Tip dankbar, wie man eine Tabelle
    generell schneller füllen kann.

    mfg P.Pfau
    [email protected]

  • #2
    Hallo,

    beim Automation-Server <i>Microsoft Word</i> stehen gleich 2 unterschiedliche Objekte für die Definition des Zielbereichs zur Verfügung: <br>
    a) <b>Selection</b>-Objekt, und <br>
    b) <b>Range</b>-Objekt.

    Im Dokument kann es nur ein <b>Selection</b>-Objekt geben, das zudem eine visuelle Rückmeldung der aktuellen Cursorposition an den Anwender zurückliefert. Mit dem Zugriff auf die Benutzerschnittstelle ist das Selection-Objekt auch langsamer als das Range-Objekt. Leider verwendet der <i>Makro-Recorder</i> von Word beim Aufzeichnen eines Makros (das als Vorlage verwendet werden soll) immer nur das Selection-Objekt, da der Makro-Recorder nur auf die Benutzerschnittstelle von Word fixiert ist.

    Im Dokument können beliebig viele <b>Range</b>-Objekte gleichzeitig vorkommen - somit ist das Range-Objekt wesentlich flexibler. Range-Objekte sind unabhängig vom Selection-Objekt. Ein Range-Objekt kennzeichnet den zu bearbeitenden Bereich, indem die Start- und Endposition festgelegt wird. Ist ein solches Objekt definiert, kann der Controller über die Eigenschaften und Methoden des Objekts den Dokumentinhalt bearbeiten. Ein Range-Objekt kann sich nur auf die aktulle Cursorpostition oder auch auf das komplette Dokument beziehen. Allerdings wird dieses Objekt niemals - im Gegensatz zu Bookmarks - im Dokument gespeichert, sondern ist nur solange aktiv, wie der Controller auf seine Automation-Serverinstanz zugreift. Ein Range-Objekt wird - im Gegensatz zum Selection-Objekt - in einem Dokument visuell <b>nicht</b> kenntlich gemacht, d.h. Word aktualisiert seine Benutzeroberfläche nicht.

    P.S: Die Benutzeroberfläche von Word kann für diesen Zeitraum auch verborgen werden (Eigenschaft <b>Visible</b>).
    &#10

    Comment

    Working...
    X