Наличие проблемы форматирования при создании документа Word из копии документа Word - PullRequest
1 голос
/ 02 октября 2010

Приложение, которое я поддерживаю, создает объединенный документ Word, копируя несколько документов Word в один документ сразу за другим.

Проблема заключается в том, что формат некоторых полей добавляемого документа изменяется в объединенном документе, а объединенный документ является копией AppendDocument (представьте, если у нас есть один документ для копирования в объединенном документе)

Первая и вторая строки документа Word выглядят следующим образом:

От: Мистер х До: Гэри Y

Адрес: NorkYork Дата: 2010/05/01

От: , До: , Адрес: и Дата: выделены жирным шрифтом и размером 10 в AppendDocument в то время как в в объединенном документе они выделены жирным шрифтом, но их размер изменился на 12!

Я запутался, я не уверен, почему размер этих 4 элементов изменяется, даже если их фактические значения имеют одинаковый размер!

Пожалуйста, смотрите код ниже, по которому передаются 2 пути документов. Первый - это BaseDocuemnt или объединенный документ, а второй - это прилагаемый документ.

Private Sub DocumentAppend(ByVal strBaseDocument As String, ByVal strAppendDocument As String)
    Dim FirstDocument As Boolean
    Dim fleBaseDocument As File
    Dim wrdRange As Word.Range
    Dim wrdAppendDocument As Word.DocumentClass
    wrdAppendDocument = New Word.DocumentClass()
    Dim AmalgamatedDocument As Word.DocumentClass
    AmalgamatedDocument = New Word.DocumentClass()
    Dim wrdApp As Word.ApplicationClass
    wrdApp = AmalgamatedDocument.Application
    Dim AmalgamatedDocumentRange As Word.Range
    Try
        wrdApp.Visible = True
        If fleBaseDocument.Exists(strBaseDocument) Then
            FirstDocument = False
            AmalgamatedDocument = wrdApp.Documents.Open(strBaseDocument)
        Else
            FirstDocument = True
            AmalgamatedDocument = wrdApp.Documents.Add()
        End If

        AmalgamatedDocumentRange = AmalgamatedDocument.Content
        AmalgamatedDocumentRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
        If Not FirstDocument Then
            AmalgamatedDocumentRange.InsertBreak (Word.WdBreakType.wdSectionBreakNextPage)
        End If
        ''# get the document to be appended
        wrdAppendDocument = wrdApp.Documents.Open(strAppendDocument)
        wrdAppendDocument.Activate()
        wrdAppendDocument.Select()
        ''# +++++++++++++++++++++++
        wrdApp.Selection.Copy()
        wrdApp.Selection.CopyFormat()
        AmalgamatedDocument.Activate()
        wrdRange = AmalgamatedDocument.Content
        wrdRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
        wrdRange.Paste()
        ''# New
        wrdApp.Selection.PasteFormat()
        ''# +++++++++++++++++++++++
        wrdAppendDocument.Close()
        ''# save the new document
        AmalgamatedDocument.SaveAs(FileName:=strBaseDocument)
        AmalgamatedDocument.Close()
End Sub

Любой совет будет с благодарностью!

1 Ответ

0 голосов
/ 17 октября 2010

Ну, во-первых, я бы начал с попытки избежать использования объекта SELECTION, когда вы на самом деле не хотите манипулировать активным экранным документом в Word.

Я бы также предложил изучитьМетод Range.InsertFile.По сути, вы открываете или создаете свой «целевой» документ, затем получаете объект диапазона CONTENT, сворачиваете его до конца и, наконец, вызываете INSERTFILE, чтобы вставить файл в этот момент.

Что-то вроде этого

        dim rngend = Doc.Content
        rngend.Collapse(WdCollapseDirection.wdCollapseEnd)
        rngend.InsertFile(File, ConfirmConversions:=False, Link:=False, Attachment:=False)

Это будет обычно верно сохранять форматирование, хотя я сталкивался с некоторыми ситуациями, когда это не совсем 100%

...