Der Zugriff auf einen Header oder Fußzeile schafft ihn, aber ein leeres Ablassen nichtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Der Zugriff auf einen Header oder Fußzeile schafft ihn, aber ein leeres Ablassen nicht

Post by Anonymous »

Meine Anwendung verwendet Microsoft.Office.interop.Word Version 12 mit eingebetteten Interop -Typen, um auf Word 2007 und höher aus einer .NET 4.0 -WPF -Anwendung zuzugreifen. Es wird im Grunde genommen ein bestimmtes Word -Dokument durchsucht, einige Dinge ersetzt und dann das Dokument erneut gespeichert. Mein Problem ist, dass der Zugriff auf einen Header oder Fußzeile in irgendeiner Weise ihn zu erzeugen scheint (ein Absatzmarke wird gezeigt), aber eine leere Header oder Fußzeile entzieht diese Kopf-/Fußzeile nicht wieder wie das Wort UI. Dies ist kein Problem in einem Dokument mit den Standard -Seitenrändern, aber wenn die Seite kleine Ränder hat, kann ein Header den Inhalt der Seite nach unten bewegen, selbst wenn der Kopfzeile nur einen leeren Absatz enthält. /> Dies ist im Grunde der Code, den ich verwende: < /p>

Code: Select all

Application application = new Application();
// Just for debugging.
application.Visible = true;
Document document = application.Documents.Open(filename);

foreach (Section section in document.Sections)
{
HeaderFooter header = section.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary];

if (header == null || !header.Exists || header.LinkToPrevious)
{
// Header is disabled or linked to previous section.
continue;
}

// We need to swith the view, otherwise some operations in the header
// might fail.
// This code is from a recorded Word macro.
Window activeWindow = application.ActiveWindow;
if (activeWindow.View.SplitSpecial != WdSpecialPane.wdPaneNone &&
activeWindow.Panes.Count > 1)
{
activeWindow.Panes[2].Close();
}
activeWindow.ActivePane.View.Type = WdViewType.wdPrintView;
activeWindow.ActivePane.View.SeekView = WdSeekView.wdSeekPrimaryHeader;

// Get the full range of the header. This call causes my problem.
Range headerRange = header.Range;

// I'm doing something with 'headerRange' here, but this doesn't affect
// the problem.

// This switches the current view out of the header. Usually this also
// deletes the header if it is empty. But if I accessed 'header.Range'
// it doesn't delete it. Why?
activeWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;
}

application.Quit(SaveChanges: WdSaveOptions.wdDoNotSaveChanges);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post