複数の小さなdocx(またはrtf)を1つのdocxにまとめる簡単なコードを開発しようとしています。mutilpleをマージするWord Docs
文書作成には、以下に基づくべきである:
1.私は、列AにB列の小さなドキュメント
2の名前のリストを持っている(はい/いいえ)
EX 2つのエントリの一つであります:
A B
doc1 yes
doc2 no
doc3 yes
doc4 yes
doc5 no
3. iは既に 4.新しい(マージ)ドキュメントが配置される場所を供給シートのセル内の小さなドキュメントの場所を供給している以下
でありますサンプルコード
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のWINWORDプロセスなしMSWordのウィンドウで終わるでしょマージする10のドキュメントを持っているということです。 には、この問題を解決する方法があります。 私はすべての小さなドキュメントを.rtfに変換すると、ファイルを開く必要なくファイルを解析できます。
すべてのヘルプははるかに
ループのたびに、「objTempWord」と呼ばれるWordアプリケーションを作成しています。あなたは決して 'Quit'をしません(これが10 WINWORDプロセスに終わる理由です)。あなたは決して使っていないobjTempSelectionというオブジェクトを作成するために使っているようです。多分余分なコードを取り除くと、あなたの問題は消え去るでしょう。 (私が知る限り、複数のWord.Applicationsを実行する必要はありません) – YowE3K
これを正しく理解していれば、ドキュメントの一覧があり、それらをすべて1つのファイルに挿入することができます。私はこれを、Selection.InsertFile関数で行いました。ここでは、新しく開かれたWordファイルにファイルをマージするCreateObject(Word.Application.Documents.Add)を使用して、ファイルの場所を定義します。これはWinWordではなくWordが使用されていることを明確に定義します。これがうまくいくと思われる場合は、レスポンスにコードを追加することができます。 – Cyril
@ YowE3K:プロセスで終了すると、リスト内の次のドキュメントを開くことはできません。 –