Announcement

Collapse
No announcement yet.

Word-Dokumente zusammenfassen mit Range?

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

  • Word-Dokumente zusammenfassen mit Range?

    Ich muss mehrere Word-Dokumente zu einem grossen Dokument zusammenfassen, nur bekomme ich ständig Fehler:

    procedure TmpDokAnhaengen(Datei: String);<br>
    var<br>
    wa: TWordApplication;<br>
    qDoc, zDoc: _Document;<br>
    qRange, zRange: Range;<br>
    oFalse, oTrue, oDatName, RangeStart, RangeEnde: OleVariant;<br>
    dummy: Integer;<br>
    begin<br>
    oFalse := False;<br>
    oTrue := True;<br>
    <br>
    wa := TWordApplication.Create(Tools);<br>
    wa.Connect;<br>
    <br>
    oDatName := Datei;<br>
    qDoc := wa.Documents.Open(oDatName, oFalse, oFalse, oFalse, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, oFalse);<br>
    qRange := qDoc.Get_Content;<br>
    qRange.Copy;<br>
    <br>
    oDatName := DRUCKPFAD + 'Ziel.doc';<br>
    zDoc := wa.Documents.Open(oDatName, oFalse, oFalse, oFalse, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, oFalse);<br>
    <br>
    dummy := qDoc.Range(EmptyParam, EmptyParam).Get_End_;<br>
    RangeStart := Dummy -1;<br>
    RangeEnde := Dummy;<br>
    <br>
    { Variante 1 }<br>
    zDoc.Range(RangeStart, RangeEnde).Paste;<br>
    <br>
    { Variante 2 }<br>
    oDatName := Datei;<br>
    zDoc.Range(RangeStart, RangeEnde).InsertFile(oDatName, EmptyParam, EmptyParam, oFalse, oFalse);<br>
    <br>
    zDoc.Save;<br>
    <br>
    zDoc.Close(oTrue, EmptyParam, EmptyParam);<br>
    qDoc.Close(oFalse, EmptyParam, EmptyParam);<br>
    wa.Disconnect;<br>
    wa.Free;<br>
    end;<br>
    <br>
    Beide Varianten führen zu der Meldung "Ausnahmefehler im Server". Ich habe WinXP und Word2003.

    Ich weiss das Variante 1 funktionieren muss, da ich auf den selben Rechner sowas schon erfolgreich gemacht habe (habe irgendeine Kleinigkeit übersehen?).

    mfg,

    bp

  • #2
    Wo kommen denn die Ausnahmefehler? Hast Du es mal mit sehr einfachen Dokumenten versucht? Eine andere Möglichkeit wäre der Insert. Du kannst mal versuchen, eine Makroaufzeichnung vom Dokument einfügen zu bekommen, das würde Dir das Copy&Paste ersparen...<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Ich scheine dringent benötigte Parameter einfach per EmptyParam zu ignorieren.

      Die Lösung ist (zumindest für mich) die Word2000- durch die Word97-Unit zu ersetzen, in der werden diese Parameter nicht verwendet bzw. Word "schaltet in den Kompatibilitäts-Modus".

      Trotzdem Danke

      Comment


      • #4
        <PRE>
        procedure TFinReport.add_ItemsToCatalog(const piSourceFilename, piAddFilename: WideString);
        var
        lSelection : WordSelection;
        lType : OleVariant;
        lMoveUnit : OleVariant;
        lMoveCount : OleVariant;
        begin
        // Dokument laden (piSourceFileName)


        // Ans Ende des Dokuments positionieren und ggf. einen Seitenumbruch einfügen
        ItemCounter := ItemCounter + 1;
        lType := wdPageBreak;
        lMoveUnit := wdStory;
        lMoveCount := 1;
        lSelection := FinReport.WordApp.ActiveDocument.ActiveWindow.Sele ction;
        lSelection.Move(lMoveUnit, lMoveCount);

        // Dokument an dass Ende des Dokuments einfügen und speichern
        lSelection.InsertFile(piAddFilename, EmptyParam, EmptyParam, EmptyParam, EmptyParam);

        // Dokument speichern (piSourceFileName)

        end;

        </PRE&gt

        Comment

        Working...
        X