在 Word(2003 或 2007)中,有没有办法让多个文档使用一个页眉/页脚?
我希望能够在一个位置更改页眉/页脚并让它影响多个文档。
即我有 50 个文档,它们都有相同的页眉/页脚。除了打开所有 50 个文档来进行更改之外,有没有办法将 50 个文档链接(OLE?)到一个主文档并且只需要更改主文档?
如果没有内置方式,是否有人使用 VBA 完成此操作?
我不确定这在实践中将如何工作,但您可以将其他文件作为链接插入到 Word 文档中。
首先创建带有页眉/页脚内容的文档,内容在文档的正文中。保存。
然后转到您的 50 个文档之一,进入页眉/页脚。转到插入 | 文件。找到第一个文件,然后单击“插入文件”对话框中“打开”按钮旁边的小下拉箭头。从下拉列表中选择插入链接。内容现在应该显示在文档中。如果你点击内容,通常它会有一个灰色的背景,表明它确实是一个 Word 字段。
现在,当您更改第一个文档时,您可以打开第二个文档,更新字段(单击其中的任意位置并按 F9),新内容将被拉入。您还可以通过编程非常简单地更新字段,或者在 TOOLS | 选项 | 打印,每次打印文档时都会有一个自动更新字段的框。
AFAIK 更改文档标题(简单)必须通过打开文档来完成。那就是说你有几个选择。首先,如果文档以 office XML 格式保存,那么您可以使用 MSXML 库打开文件并更改标题中的数据。(或者改变本质上是文本文件的几十种其他方法中的任何一种。)如果文件仍然是二进制格式,那么您实际上只有两个选项之一。第一种是通过 vba 打开文件并通过文档对象模型更改标题。第二个是找出二进制格式(记录在案)并使用 VB6/VBA 本机二进制 IO 更改它(非常重要)。
除非我认为我可以获得更多时间,否则我将失去编写代码来直接更改文档的过程,我可能只会遍历文件夹中的所有文件,打开它们并更改它们。至于将标题存储在某个地方......您可以将标题数据放在一个文本文件中并将其拉入。或者将文档模板保存在某个地方。
这是一个非常简单的例子:
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