C# -> Word Header formatiert kopieren
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
anfang
aufzeichnen
code
dokument
ende
feststelle
formatierung
geschichte
kopf
kopieren
null
page
positiv bewerten
problem
programm
schritt
seitenzahl
start
text
url
-
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);
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
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();
-
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 -
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... -
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 -
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)
also muss dir ein Dickes DANKESCHÖN reichen
Edit:
hab es jetzt hinbekommen, hatte wirklich nur einen schleifenfehler...
ich freu mich immer so, wenn mein hart erkämpftes Programm endlich leuft
Beitrag zuletzt geändert: 25.11.2013 15:02:37 von tft-development -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage