在VBA中组合词对象

在VBA中组合词对象,vba,object,ms-word,Vba,Object,Ms Word,我在VBA中创建了三个Word对象,它们是:;A、 B和C 我想把它们组合成一个单词对象,叫做D 我试图通过文档合并来实现这一点,但没有成功 我的资料来源如下: Set p_appWord = p_appWordContent.Merge(p_appWordGeneral) p\u appWord是主对象,(p\u appWordContent+p\u appWordGeneral)是子对象。这是一个示例,可以实现您对三个文档的期望,并合并为一个新文档: Dim a As String, b

我在VBA中创建了三个Word对象,它们是:;A、 B和C

我想把它们组合成一个单词对象,叫做D

我试图通过文档合并来实现这一点,但没有成功

我的资料来源如下:

Set p_appWord = p_appWordContent.Merge(p_appWordGeneral)

p\u appWord
是主对象,(
p\u appWordContent
+
p\u appWordGeneral
)是子对象。

这是一个示例,可以实现您对三个文档的期望,并合并为一个新文档:

Dim a As String, b As String, c As String, d As Document
Dim r As Range

a = "path to first doc"
b = "path to second doc"
c = "path to third doc"
Set d = Documents.Add

Set r = d.Content
r.InsertFile a, Link:=False
Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
r.InsertFile b, Link:=False
Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
r.InsertFile c, Link:=False
如果希望对数量可变的文件执行此操作,则需要对其进行循环。以下是一个示例,请设置对Microsoft脚本运行时的引用:

Dim d As Document
Dim r As Range
Dim fso As FileSystemObject, fol As Folder, f As File
Dim fc

Set fso = New FileSystemObject
Set fol = fso.GetFolder("path to your files")

Set d = Documents.Add

For Each f In fol.Files
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
    r.InsertFile f.Path, Link:=False
Next f
编辑 如果希望将当前打开的所有文档合并为一个文档而不迭代文件,请使用以下方法:

Dim d As Document
Dim r As Range
Dim allDocs As Variant

ReDim allDocs(Documents.Count)

For i = 1 To Documents.Count
    allDocs(i - 1) = Documents(i).Name
Next i

Set d = Documents.Add

For i = 0 To UBound(allDocs) - 1
    Documents(allDocs(i)).Range.Copy
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
    r.Paste
Next i

这是一个示例,用于实现三个文档合并为一个新文档的愿望:

Dim a As String, b As String, c As String, d As Document
Dim r As Range

a = "path to first doc"
b = "path to second doc"
c = "path to third doc"
Set d = Documents.Add

Set r = d.Content
r.InsertFile a, Link:=False
Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
r.InsertFile b, Link:=False
Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
r.InsertFile c, Link:=False
如果希望对数量可变的文件执行此操作,则需要对其进行循环。以下是一个示例,请设置对Microsoft脚本运行时的引用:

Dim d As Document
Dim r As Range
Dim fso As FileSystemObject, fol As Folder, f As File
Dim fc

Set fso = New FileSystemObject
Set fol = fso.GetFolder("path to your files")

Set d = Documents.Add

For Each f In fol.Files
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
    r.InsertFile f.Path, Link:=False
Next f
编辑 如果希望将当前打开的所有文档合并为一个文档而不迭代文件,请使用以下方法:

Dim d As Document
Dim r As Range
Dim allDocs As Variant

ReDim allDocs(Documents.Count)

For i = 1 To Documents.Count
    allDocs(i - 1) = Documents(i).Name
Next i

Set d = Documents.Add

For i = 0 To UBound(allDocs) - 1
    Documents(allDocs(i)).Range.Copy
    Set r = d.Range(d.Content.End - 1, d.Content.End - 1)
    r.Paste
Next i

如果你想得到一些答案,最好包含你的代码,请编辑你的帖子以添加它。我在这里添加了我的源代码。你是真的试图“合并”文档,还是希望将所有文档合并为一个文档,即从三个文档中创建一个文档?因为“合并”就是合并修订。我只想把所有文档合并成一个。因为我需要创建一个600页的文档,所以性能不好。因此,我想创建多个目标词,然后将它们组合起来。在保留原始内容的同时提高可读性。如果你想得到一些答案,最好包含你的代码,请编辑你的帖子以添加它。我在这里添加了我的源代码。你是真的试图“合并”文档,还是希望将所有文档合并为一个文档,即从三个文档中创建一个文档?因为“合并”就是合并修订。我只想把所有文档合并成一个。因为我需要创建一个600页的文档,所以性能不好。所以我想创建多个对象词,然后将它们组合起来。在保留原始内容的同时提高可读性。非常感谢,但我不想在文件夹中创建word文档,我想创建对象,然后组合成一个对象。你有什么想法吗?修改了代码以合并所有当前活动的文档。非常感谢,但我不想在文件夹中创建word文档,我想创建一个对象,然后合并为一个对象。你有什么想法吗?修改代码合并所有当前活动的文档。