Один центральный верхний / нижний колонтитул, используемый несколькими документами (Word 2003 или 2007) - PullRequest
1 голос
/ 21 декабря 2009

Внутри Word (2003 или 2007), есть ли способ иметь один верхний / нижний колонтитул, который используется несколькими документами?

Я хочу иметь возможность изменять верхний / нижний колонтитул в одном месте, и это влияет на несколько документов.

т.е. У меня 50 документов, и все они имеют одинаковый колонтитул. Вместо открытия всех 50 документов для внесения изменений, есть ли способ связать (OLE?) 50 документов с основным документом и нужно только изменить основной документ?

Если нет встроенного способа, кто-нибудь делал это с помощью VBA?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Я не уверен, как это будет работать на практике, но вы можете вставить другие файлы в документ Word как ссылку.

Сначала создайте документ с содержимым верхнего / нижнего колонтитула, с содержимым в теле документа. Сохрани это.

Затем перейдите к одному из ваших 50 документов, перейдите в верхний / нижний колонтитул. Перейти к ВСТАВИТЬ | ФАЙЛ. Найдите первый файл, затем щелкните маленькую стрелку раскрывающегося списка рядом с кнопкой ОТКРЫТЬ в диалоговом окне «Вставить файл». В раскрывающемся списке выберите INSERT AS LINK. Содержимое должно теперь отображаться в документе. Если щелкнуть содержимое, обычно оно будет иметь серый фон, чтобы указать, что это действительно поле Word.

Теперь, когда вы измените первый документ, вы можете открыть второй документ, обновить поле (щелкнуть где-нибудь в нем и нажать F9), и новый контент будет извлечен. Вы также можете программно обновить поля довольно легко, или в ИНСТРУМЕНТЫ | ВАРИАНТЫ | ПЕЧАТЬ, есть поле для автоматического обновления полей при каждой печати документа.

1 голос
/ 22 декабря 2009

AFAIK для изменения заголовка документа (просто) должен быть сделан с открытым документом. Тем не менее, у вас есть несколько вариантов. Во-первых, если документы сохраняются в офисном формате XML, вы можете открыть файлы с помощью библиотеки MSXML и изменить данные в заголовке. (Или любой из десятков других способов изменить то, что по сути является текстовым файлом.) Если файл (ы) все еще в двоичном формате, у вас действительно есть только один из двух вариантов. Первый - открыть файл через vba и изменить заголовок через объектную модель документа. Вторым было бы выяснить двоичный формат (который задокументирован) и изменить его, используя собственный двоичный ввод-вывод VB6 / VBA (очень нетривиальный).

Если я не думал, что смогу выиграть больше времени, чем потерять написание кода для непосредственного изменения документов, я, вероятно, просто переберу все файлы в папке, открою их и изменим. Что касается хранения заголовка где-нибудь ... Вы можете просто поместить данные заголовка в текстовый файл и извлечь его. Или сохранить шаблон документа где-нибудь.

Вот очень тривиальный пример:

Public Sub Example()
    Dim asFiles() As String
    Dim lFile As Long
    Dim docCrnt As Word.Document
    asFiles = GetFiles("C:\Test\", "*.doc")
    For lFile = 0& To UBound(asFiles)
        Set docCrnt = Word.Documents.Open(asFiles(lFile))
        docCrnt.Windows(1).View.SeekView = wdSeekCurrentPageHeader
        Selection.Text = "I am the header."
        docCrnt.Close True
    Next
End Sub

Public Function GetFiles( _
    ByVal folderPath As String, _
    Optional ByVal pattern As String = vbNullString _
    ) As String()

    Dim sFile As String
    Dim sFolder As String
    Dim asRtnVal() As String
    Dim lIndx As Long

    If Right$(folderPath, 1&) = "\" Then
        sFolder = folderPath
    Else
        sFolder = folderPath & "\"
    End If
    sFile = Dir(sFolder & pattern)
    Do While LenB(sFile)
        ReDim Preserve asRtnVal(lIndx) As String
        asRtnVal(lIndx) = sFolder & sFile
        lIndx = lIndx + 1&
        sFile = Dir
    Loop
    If lIndx = 0& Then
        ReDim asRtnVal(-1& To -1&) As String
    End If
    GetFiles = asRtnVal
    Erase asRtnVal
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...