2011-11-22 33 views
2

一个单词文档具有多个页面。如何使用VB.Net将这些页面分成单独的文档?VB.Net将单词文档分解为单独的文档(分页符作为分隔符)

我希望自动执行此过程。

我使用ms教程进行基本学习:http://support.microsoft.com/kb/316383 但我不知道如何在文档中查找分页符并将该页面的内容移动到单独的文档中。

+0

你有没有看这个[SO问题](http://stackoverflow.com/questions/825254/word-automation-detect- if-page-break-is-necessary)它适用于C#,但应该给你一个想法。还可以看看这个[论坛](http://social.msdn.microsoft.com/Search/en-US/vstudio?query=word%20page%20breaks&rq=meta:Search.MSForums.ForumID(0e69520a-0af0 -4085-a8c4-c5f21ce20e01)+ site:microsoft.com&rn = Visual + Studio + Tools + for + Office +论坛) –

+0

谢谢。但对我没有多大帮助。我也搜索并找到了解决方案。我不知道这是不是很好的解决方案,但它有效。解答在下面作为答案发布。如果您发现任何可以改进的地方,请发布。 –

回答

1

解决方案:

Private Sub ParseWordDoc(ByVal Filename As String, ByVal NewFileName As String) 
    Dim WordApp As Microsoft.Office.Interop.Word.Application = New Microsoft.Office.Interop.Word.Application() 
    Dim BaseDoc As Microsoft.Office.Interop.Word.Document 
    Dim DestDoc As Microsoft.Office.Interop.Word.Document 

    Dim intNumberOfPages As Integer 
    Dim intNumberOfChars As String 
    Dim intPage As Integer 

    'Word Constants 
    Const wdGoToPage = 1 
    Const wdStory = 6 
    Const wdExtend = 1 
    Const wdCharacter = 1 

    'Show WordApp 
    WordApp.ShowMe() 

    'Load Base Document 
    BaseDoc = WordApp.Documents.Open(Filename) 
    BaseDoc.Repaginate() 

    'Loop through pages 
    intNumberOfPages = BaseDoc.BuiltInDocumentProperties("Number of Pages").value 
    intNumberOfChars = BaseDoc.BuiltInDocumentProperties("Number of Characters").value 

    For intPage = 1 To intNumberOfPages 
     If intPage = intNumberOfPages Then 
      WordApp.Selection.EndKey(wdStory) 
     Else 
      WordApp.Selection.GoTo(wdGoToPage, 2) 
      Application.DoEvents() 

      WordApp.Selection.MoveLeft(Unit:=wdCharacter, Count:=1) 
     End If 

     Application.DoEvents() 

     WordApp.Selection.HomeKey(wdStory, wdExtend) 
     Application.DoEvents() 

     WordApp.Selection.Copy() 
     Application.DoEvents() 

     'Create New Document 
     DestDoc = WordApp.Documents.Add 
     DestDoc.Activate() 
     WordApp.Selection.Paste() 
     DestDoc.SaveAs(NewFileName & intPage.ToString & ".doc") 
     DestDoc.Close() 
     DestDoc = Nothing 

     WordApp.Selection.GoTo(wdGoToPage, 2) 
     Application.DoEvents() 

     WordApp.Selection.HomeKey(wdStory, wdExtend) 
     Application.DoEvents() 

     WordApp.Selection.Delete() 
     Application.DoEvents() 
    Next 

    BaseDoc.Close(False) 
    BaseDoc = Nothing 

    WordApp.Quit() 
    WordApp = Nothing 
End Sub 

幸得 “Jay Taplin

相关问题