3

を使用してヘッダー範囲を選択する.Select()と、Microsoft Word は現在のビュー タイプ (印刷レイアウト) からドラフト ビューに自動的に切り替わります。Word が下書き表示に切り替わらないようにするにはどうすればよいですか?

次のコード例は、私が何をしているかを示しています。

 // this.Document is a Microsoft.Office.Interop.Word.Document
 Section section = this.Document.Sections.First;
 foreach (HeaderFooter header in section.Headers)
 {
   if (header.Exists) 
   {
     header.Range.Select(); // When I call this, Word switches to Draft View.
     break;
   }
 }

編集 (3):

どうやらビュータイプを保存してリセットするとうまくいきます。ただし、これにより、Word が下書き表示に切り替わり、次に印刷レイアウトに戻ると、厄介なちらつきが発生します。さらに、ヘッダー セクションから出るためにメイン ドキュメント スペースをダブルクリックすると、Word は下書きビューに戻ります。

 WdViewType viewType = this.Document.ActiveWindow.View.Type;
 range.Select();
 this.Document.ActiveWindow.View.Type = viewType;
4

3 に答える 3

4

View.SeekView範囲を選択する前に、wdNormalView (ドラフト ビュー) を除くすべてのビュー タイプに対してプロパティを設定する必要があります。

var window = this.Document.ActiveWindow;
// wdNormalView == Draft View, where SeekView can't be used and isn't needed.
if (window.View.Type != WdViewType.wdNormalView)
{
  // -1 Not Header/Footer, 0 Even page header, 1 Odd page header, 4 First page header
  // 2 Even page footer, 3 Odd page footer, 5 First page footer
  int rangeType = range.Information[WdInformation.wdHeaderFooterType];
  if (rangeType == 0 || rangeType == 1 || rangeType == 4)
    window.View.SeekView = WdSeekView.wdSeekCurrentPageHeader;
  if (rangeType == 2 || rangeType == 3 || rangeType == 5)
    window.View.SeekView = WdSeekView.wdSeekCurrentPageFooter;
}
header.Range.Select();
于 2012-12-12T13:44:42.787 に答える
-1

範囲オブジェクトの Words コレクションを利用してヘッダーを選択できます

 Section section = this.Document.Sections.First;
 foreach (HeaderFooter header in section.Headers)
 {
   if (header.Exists) 
   {
     header.Range.Words.First.Select()
     break;
   }
 }
于 2012-12-06T17:48:47.743 に答える