/// <summary> /// Gets a WdSpecialPane from a WdStoryType. /// </summary> /// <param name="StoryType">The StoryType to convert.</param> /// <returns>The WdSpecialPane corresponding to that StoryType.</returns> internal static Word.WdSpecialPane GetSplitTypeForStory(Word.WdStoryType StoryType) { switch (StoryType) { case Word.WdStoryType.wdEvenPagesHeaderStory: return(Word.WdSpecialPane.wdPaneEvenPagesHeader); case Word.WdStoryType.wdEvenPagesFooterStory: return(Word.WdSpecialPane.wdPaneEvenPagesFooter); case Word.WdStoryType.wdFirstPageHeaderStory: return(Word.WdSpecialPane.wdPaneFirstPageHeader); case Word.WdStoryType.wdFirstPageFooterStory: return(Word.WdSpecialPane.wdPaneFirstPageFooter); case Word.WdStoryType.wdPrimaryHeaderStory: return(Word.WdSpecialPane.wdPanePrimaryHeader); case Word.WdStoryType.wdPrimaryFooterStory: return(Word.WdSpecialPane.wdPanePrimaryFooter); default: throw new ArgumentException("unexpected story type"); } }
/// <summary> /// Gets the SeekView constant needed to access a given document story. /// </summary> /// <param name="Story">The document story to be accessed.</param> /// <returns>The corresponding SeekView constant.</returns> internal static Word.WdSeekView GetSeekViewForStory(Word.WdStoryType Story) { switch (Story) { case Word.WdStoryType.wdEvenPagesFooterStory: return(Word.WdSeekView.wdSeekEvenPagesFooter); case Word.WdStoryType.wdEvenPagesHeaderStory: return(Word.WdSeekView.wdSeekEvenPagesHeader); case Word.WdStoryType.wdFirstPageFooterStory: return(Word.WdSeekView.wdSeekFirstPageFooter); case Word.WdStoryType.wdFirstPageHeaderStory: return(Word.WdSeekView.wdSeekFirstPageHeader); case Word.WdStoryType.wdPrimaryFooterStory: return(Word.WdSeekView.wdSeekPrimaryFooter); case Word.WdStoryType.wdPrimaryHeaderStory: return(Word.WdSeekView.wdSeekPrimaryHeader); default: return(Word.WdSeekView.wdSeekMainDocument); } }
// Main routine to find text and replace it, // var app = new Microsoft.Office.Interop.Word.Application(); //public void FindReplaceAnywhere(MSWord.Document doc, string findText, string replaceText) public void FindReplaceAnywhere(MSWord.Document doc, Dictionary <string, string> searchAndReplace) { // Fix the skipped blank Header/Footer problem // http://msdn.microsoft.com/en-us/library/aa211923(office.11).aspx MSWord.WdStoryType lngJunk = doc.Sections[1].Headers[MSWord.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range.StoryType; // Iterate through all story types in the current document foreach (Microsoft.Office.Interop.Word.Range rngStory in doc.StoryRanges) { // Iterate through all linked stories var internalRangeStory = rngStory; do { foreach (var srch in searchAndReplace) { string findText = srch.Key; string replaceText = srch.Value; searchAndReplaceInStory(internalRangeStory, findText, replaceText); try { // 6 , 7 , 8 , 9 , 10 , 11 -- http://msdn.microsoft.com/en-us/library/aa211923(office.11).aspx switch (internalRangeStory.StoryType) { case MSWord.WdStoryType.wdEvenPagesHeaderStory: // 6 case MSWord.WdStoryType.wdPrimaryHeaderStory: // 7 case MSWord.WdStoryType.wdEvenPagesFooterStory: // 8 case MSWord.WdStoryType.wdPrimaryFooterStory: // 9 case MSWord.WdStoryType.wdFirstPageHeaderStory: // 10 case MSWord.WdStoryType.wdFirstPageFooterStory: // 11 if (internalRangeStory.ShapeRange.Count > 0) { foreach (Microsoft.Office.Interop.Word.Shape oShp in internalRangeStory.ShapeRange) { if (oShp.TextFrame.HasText != 0) { searchAndReplaceInStory(oShp.TextFrame.TextRange, findText, replaceText); } } } break; default: break; } } catch { // On Error Resume Next } } // Get next linked story (if any) internalRangeStory = internalRangeStory.NextStoryRange; } while (internalRangeStory != null); } }
/// <summary> /// Determines whether the specified story is a header or footer. /// </summary> /// <param name="StoryType">The story type to check.</param> /// <returns>True if it is a header or footer, otherwise False.</returns> internal static bool IsHeaderFooter(Word.WdStoryType StoryType) { switch (StoryType) { case Word.WdStoryType.wdPrimaryHeaderStory: case Word.WdStoryType.wdEvenPagesHeaderStory: case Word.WdStoryType.wdFirstPageHeaderStory: case Word.WdStoryType.wdPrimaryFooterStory: case Word.WdStoryType.wdEvenPagesFooterStory: case Word.WdStoryType.wdFirstPageFooterStory: return(true); default: return(false); } }
/// <summary> /// Determines whether the input story is a header or a footer. /// </summary> /// <param name="StoryType">The story type to check.</param> /// <returns>True if it is a header, False if it is a footer.</returns> /// <exception cref="ArgumentException">If the story type is not a valid header/footer story type, throws.</exception> private static bool IsHeader(Word.WdStoryType StoryType) { switch (StoryType) { case Word.WdStoryType.wdPrimaryHeaderStory: case Word.WdStoryType.wdEvenPagesHeaderStory: case Word.WdStoryType.wdFirstPageHeaderStory: return(true); case Word.WdStoryType.wdPrimaryFooterStory: case Word.WdStoryType.wdEvenPagesFooterStory: case Word.WdStoryType.wdFirstPageFooterStory: return(false); default: throw new ArgumentException("this is a non header/footer story type"); } }
/// <summary> /// Gets a HeaderFooterIndex from a WdStoryType. /// </summary> /// <param name="StoryType">The StoryType to convert.</param> /// <returns>The type of HeaderFooterIndex corresponding to that StoryType.</returns> /// <exception cref="ArgumentException">If the story type is not a valid header/footer story type, throws.</exception> internal static Word.WdHeaderFooterIndex GetHeaderFooterType(Word.WdStoryType StoryType) { switch (StoryType) { case Word.WdStoryType.wdPrimaryHeaderStory: case Word.WdStoryType.wdPrimaryFooterStory: return(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary); case Word.WdStoryType.wdEvenPagesHeaderStory: case Word.WdStoryType.wdEvenPagesFooterStory: return(Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages); case Word.WdStoryType.wdFirstPageHeaderStory: case Word.WdStoryType.wdFirstPageFooterStory: return(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage); default: throw new ArgumentException("this is a non-header/footer story type"); } }