我想開發一個簡單的代碼,它將多個小docx(或rtf)組合成一個docx。合併mutilple Word Docs
文檔創建應基於以下幾點:
1.我有在列A中的小文檔
2.在B欄是2項中的一個的名稱的列表(是/否)
離:
A B
doc1 yes
doc2 no
doc3 yes
doc4 yes
doc5 no
3.我已經提供的小文檔的位置在小區在片材 4.還提供其中新的(合併)DOC將被放置的地方
下面是一個SAMPL代碼
Application.ScreenUpdating = False
strRandom = Replace(Replace(Replace(Now, ":", ""), "/", ""), " ", "")
MergeFileName = "Merger" & strRandom & ".doc"
MergeFolder = mainworkbook.Sheets("Main").Range("L10").Value
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add
objWord.Visible = True
Set objSelection = objWord.Selection
'objSelection.TypeText ("Saving this file after this text")
objDoc.SaveAs (MergeFolder & MergeFileName)
For i = 1 To NoOfFiles
If Range("B" & i).Value = "Yes" Then
Set objTempWord = CreateObject("Word.Application")
Set tempDoc = objWord.Documents.Open(Folderpath & "\" & Range("A" & i).Value)
'Set wb = Documents.Open(MyPath & "\" & MyName)
Set objTempSelection = objTempWord.Selection
'objTempSelection.WholeStory
'Selection.Copy
tempDoc.Range.Select
tempDoc.Range.Copy
'Windows(1).Activate
'Selection.EndKey Unit:=wdLine
'objSelection.TypeParagraph
objSelection.PasteSpecial xlPasteAll
.InsertBreak wdPageBreak
tempDoc.Close
End If
Next
objDoc.Save
Application.ScreenUpdating = True
mainworkbook.Sheets("Main").Activate
MsgBox "Completed...Merge File is saved at " & MergeFolder & MergeFileName
FetchFileClicked = False
End Sub
與此代碼的問題,e是它不會導致死亡打開臨時文檔,所以我有10個文件要合併我會結束了10個WINWORD過程中,沒有窗戶的MSWord。 有沒有辦法解決這個問題。 我聽說如果我將所有小文檔轉換爲.rtf,我可以解析文件而無需打開它。
任何幫助將非常感激
每次通過循環創建一個Word應用程序時,您會調用'objTempWord'。你永遠不會「退出」它(這就是爲什麼你最終得到10個WINWORD進程),你似乎只用它來創建一個你永遠不會使用的名爲'objTempSelection'的對象。也許擺脫多餘的代碼,你的問題就會消失。 (據我所知,沒有必要運行多個Word.Applications。) – YowE3K
如果我正確理解這一點,你有一個文件列表,你想要將它們全部插入到一個文件中。我用Selection.InsertFile函數完成了這個工作,在這個函數中定義了文件的位置,使用CreateObject(Word.Application.Documents.Add)將文件合併到新打開的Word文件中。這將明確定義Word使用,而不是WinWord。如果這聽起來像是可行的,我可以嘗試在響應中添加一些代碼。 – Cyril
@ YowE3K:如果我在這個過程中引入了quit,它將永遠不會打開列表中的下一個文檔來複制它的內容,除非我錯過了smth。 –