1

An hour ago I been searching for a code that split word document into separate pages I found this question

Using the code in the thread

static class PagesExtension {
    public static IEnumerable<Range> Pages(this Document doc) {
        int pageCount = doc.Range().Information[WdInformation.wdNumberOfPagesInDocument];
        int pageStart = 0;
        for (int currentPageIndex = 1; currentPageIndex <= pageCount; currentPageIndex++) {
            var page = doc.Range(
                pageStart
            );
            if (currentPageIndex < pageCount) {
                //page.GoTo returns a new Range object, leaving the page object unaffected
                page.End = page.GoTo(
                    What: WdGoToItem.wdGoToPage,
                    Which: WdGoToDirection.wdGoToAbsolute,
                    Count: currentPageIndex+1
                ).Start-1;
            } else {
                page.End = doc.Range().End;
            }
            pageStart = page.End + 1;
            yield return page;
        }
        yield break;
    }
}

I call the code above using this code

var app = new Microsoft.Office.Interop.Word.Application();
object missObj = System.Reflection.Missing.Value;
app.Visible = false;

var doc = app.Documents.Open(fileLocation);
int pageNumber = 1;

foreach (var page in doc.Pages())
{
    Microsoft.Office.Interop.Word.Document newDoc = app.Documents.Add(ref missObj, ref missObj, ref missObj, ref missObj);
    page.Copy();
    var doc2 = app.Documents.Add();
    doc2.Range().Paste();
    object newDocName = pageNumber.ToString() + ".docx";
    Console.WriteLine(newDocName);
    doc2.SaveAs2(newDocName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatXMLDocument,
                         CompatibilityMode: Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2010);
    pageNumber++;
}
app.ActiveDocument.Close();
app.Quit();

But I'm getting an error in a specific document and here is the error

This method or property is not available because no text is selected.

What is the reason for it? i checked the document and found out that the document contains lots of spaces before the next page. How can I solve this?

And using the code above it didn't copy the header and footer. Thank you

Update: Error

This method or property is not available because no text is selected.
   at Microsoft.Office.Interop.Word.Range.Copy()
   at retrieveObjects(String location) in Document.cs:line 31

and this is the line

page.Copy();
outlook email
  • 361
  • 1
  • 3
  • 14

0 Answers0