kostenloser Webspace werbefrei: lima-city


C# -> Word Header formatiert kopieren

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    hallo,
    in meinem Programm (C# Forms) kopiere ich eine Seite eines Word-Dokuments in ein neu erstelltes Word-Dokument
    es werden beim Kopieren des textes Formate eingehalten und Bilder aus Kopf- und Fußzeile kopiert...

    Der Text in Kopf- und Fußzeile wird nicht kopiert
    warum nicht, und wie bekomme ich das hin?

    hier mein code zum kopieren:
    // setzt das select Start
    ExistingDocument.ActiveWindow.Selection.GoTo(Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage, null, null, count.ToString());
    // setzt das select Ende  
    ExistingDocument.ActiveWindow.Selection.GoTo(Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark, null, null, "\\page");
    // kopiert den selektierten bereich
    ExistingDocument.ActiveWindow.Selection.Copy();
    
    // fügt kopierten Inhalt in neues Word Dokument ein (mit Formatierung)
    NewDoc.ActiveWindow.Selection.PasteAndFormat(Word.WdRecoveryType.wdFormatOriginalFormatting);
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    Wenn du "manuell" aus Word was kopierst, werden Kopf- und Fußzeile auch nicht mitkopiert. Wieso sollte es beim automatisierten Kopieren auf einmal der Fall sein?
    Hier siehst du beispielsweise als VBA-Code, wie die Kopfzeile separat zu kopieren wäre. Mit der Fußzeile wird das fohl gleichermaßen funktionieren:
    http://www.vba-wordwelt.de/word-mit-vba/dokumentinhalte/kopf--und-fusszeile/code-beispiele_kopffusszeilen/akopfzeilekopieren.html
    Du kopierst zwar die Formatierung des Textes mit, aber eben nur des Textes, und nicht die von Kopf- und Fußzeile.
  4. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    danke für die Antwort, aber das will irgendwie nicht... :(

    hab eine neue Denkweise:

    ich kopiere den text nicht sondern:
    -> ich Lösche alles außer die Seite die ich behalten will
    -> speichere als PDF
    -> schließe das Word ohne zu speichern
    -> öffne es wieder und wiederhole den Vorgang... bis alle Seiten als PDF erstellt sind


    so bleiben kopf und fußzeile so erhalten wie sie sind...

    Mein Problem:
    Wie setze ich den select ans Ende und wie ans Anfang einer Seite?

    hab einiges Probiert und es gab nur probleme beim delette();

  5. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    tft-development schrieb:
    Wie setze ich den select ans Ende und wie ans Anfang einer Seite?

    hab einiges Probiert und es gab nur probleme beim delette();

    Also gerade bei solchen Geschichten mit Excel und Word ist meiner Ansicht nach die allereinfachste Möglichkeit: Makro aufzeichnen, und dann den aufgezeichneten, generierten VBA-Code ansehen. Dann kannst du dort Schritt für Schritt nachvollziehen, wie Word das intern behandelt :thumb:
  6. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    Habe das problem soweit gelößt:
    erst lösche ich alles nach der Seite (von hinten beginnend wegen Seitenzahl)
    dann noch alles vor der Seite (auch von hinten)


    // alles nach der Seite löschen
    int start = ActualPage;
    int end = NumberOfPages;
    
    while (end > start)
    {
    Doc.Selection.GoTo(WdGoToItem.wdGoToPage, null, null, end);
    Doc.Selection.GoTo(WdGoToItem.wdGoToBookmark, null, null, "\\page");
    Doc.Selection.Delete();
    end--;
    }
    
    // alles vor der Seite löschen
    int c = count;
    while (c > 1)
    {
    c--;
    Doc.Selection.GoTo(WdGoToItem.wdGoToPage, null, null, c);
    Doc.Selection.GoTo(WdGoToItem.wdGoToBookmark, null, null, "\\page");
    Doc.Selection.Delete();
    }


    Mein neues Problem:

    seltsamerweise wird jetzt immer die letzte Seite ausgewählt,
    aber das ist sicher nur ein Schleifenfehler...
  7. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    tft-development schrieb:
    Mein neues Problem:

    seltsamerweise wird jetzt immer die letzte Seite ausgewählt,
    aber das ist sicher nur ein Schleifenfehler...

    Da hast du vermutlich Recht, denn wenn beispielsweise die Seitenanzahl = 6 wäre, dann gehen wahrscheinlich die Seitenindizes von 0 bis fünf [0..5]. Kannst du das beispielsweise aus dem Debugger feststellen? Bei solchen Geschichten ist es immer nett, das schnell mal als VBA-Makro direkt in Word oder Excel zu implementieren, da man dort über die Direktanzeige die Werte schön überprüfen kann ;-)
  8. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    habs durch mehrere Ausgaben geprüft,
    bei 6 Seiten geht es von 1 bis 6

    hat mich auch verwundert...

    ps: ich hab das gesamte programm schon einmal in VBA geschrieben,
    das Problem ist, dass ich es extern (mit indirektem Zugriff auf die Word Datei machen muss, da es dynamisch sein soll)
    in VBA ging es problemlos, in c# kam ich mit der Übersetzung des öfteren ein wenig durcheinander,
    außerdem trat dieses Problem mit dem Header nicht auf und wusste nicht weiter...

    ich würde dich gern positiv bewerten, da du mir schon einige male geholfen hast,
    aber leider kann ich das nicht... (5punkte-regel) :slant:
    also muss dir ein Dickes DANKESCHÖN reichen :wink:

    Edit:
    hab es jetzt hinbekommen, hatte wirklich nur einen schleifenfehler...

    ich freu mich immer so, wenn mein hart erkämpftes Programm endlich leuft :sound:

    Beitrag zuletzt geändert: 25.11.2013 15:02:37 von tft-development
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!