2017-02-27 47 views
1

我在VBA中創建了三個Word對象,它們是; A,B和C在VBA中組合詞對象

我想這些組合成所謂的一個字對象,D.

我試圖通過一個文件達致這合併無濟於事。

我的源如下:

Set p_appWord = p_appWordContent.Merge(p_appWordGeneral) 

p_appWord是主對象和(p_appWordContentp_appWordGeneral +)是子對象。

+2

如果你想得到一些答案,你最好包括你的代碼,請編輯你的帖子來添加它。 – R3uK

+0

我將我的源代碼添加到了這裏。 –

+0

你真的想「合併」這些文件嗎?或者你希望簡單地將所有文件連接成一個文件,即從三個文件創建一個文件?因爲使用「合併」,您正在合併修訂。 – LocEngineer

回答

0

這是爲了實現你的願望的三份文件爲例,合併成一個新的:

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 
+0

非常感謝你,但我不想在文件夾中創建word文檔,我想創建對象然後合併爲1個對象。你有什麼主意嗎? –

+0

修正後的代碼合併所有當前活動的文檔。 – LocEngineer

+0

它工作還是隻需要下個月? – LocEngineer