#1
|
|||
|
|||
Trying to combine Word documents using Excel macro
Hello, I am using the macro shown below to combine 3 Word documents. When I try to run the macro, I get the error "Run-time error '438': Object doesn't support this property or method" and the debug leads me to the line with Paste (highlighted in yellow in the screenshot). Do I need to include references in addition to the Word library that I've already added? Thanks in advance.
Screenshot 2021-06-09 143015.jpg |
#2
|
||||
|
||||
We normally try to avoid the selection object and copy/paste when they aren't necessary.
Add Dim aRng as Range to the top of the macro Delete from objDoc.Range.Copy to End With In that same location, add this code Code:
Set aRng = objNewDoc.Range aRng.Collapse Direction:=wdCollapseEnd aRng.FormattedText = objDoc.Range.FormattedText 1. Create a new document 2. Go to Insert > Object > Text from File 3. Pick multiple files (Select and Shift+Select) 4. Click OK
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
||||
|
||||
For comprehensive document-combining code, see the Combine Multiple Word Documents 'Sticky' thread: https://www.msofficeforums.com/word-...documents.html
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#4
|
||||
|
||||
If you are working from Excel, you are going to have to tell Excel to open or create a Word application or it will think it is working in Excel. You don't need to set a reference to Word. You can use late binding to Word instead thus:
Code:
Option Explicit Sub MergeFilesInAFolderlntoOneDoc() Dim dlgFile As FileDialog Dim wdApp As Object, oRng As Object Dim objDoc As Object, objNewDoc As Object Dim StrFolder As String, strFile As String Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker) With dlgFile If .Show = -1 Then StrFolder = dlgFile.SelectedItems.Item(1) & Chr(92) Else MsgBox ("No folder is selected!") Exit Sub End If End With On Error Resume Next Set wdApp = GetObject(, "Word.Application") If Err Then Set wdApp = CreateObject("Word.Application") End If On Error GoTo 0 strFile = Dir(StrFolder & "*.docx", vbNormal) With wdApp .Visible = True Set objNewDoc = .Documents.Add While strFile <> "" Set objDoc = .Documents.Open(FileName:=StrFolder & strFile) With objNewDoc Set oRng = .Range If Len(oRng) > 1 Then oRng.Collapse 0 oRng.InsertBreak 7 End If oRng.Collapse 0 oRng.FormattedText = objDoc.Range.FormattedText objDoc.Close 0 End With DoEvents strFile = Dir() Wend objNewDoc.Activate End With End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
||||
|
||||
True, but according to MS, early-bound code runs twice as fast as late-bound code.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#6
|
||||
|
||||
That may be true, but the speed bottleneck, if any, will be that involved with opening and closing documents.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#7
|
|||
|
|||
Thanks everyone, this was very helpful in solving my problem!
|
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to combine Word 2016 documents using VBA? (Mac OS) | quanfirem | Word VBA | 1 | 10-03-2019 07:21 AM |
how to combine word Documents properly | SebastianWien | Word | 2 | 09-04-2019 12:10 AM |
Combine Multiple Word Documents | macropod | Word VBA | 0 | 09-04-2019 12:09 AM |
combine 2 different word documents | salimnore | Word | 6 | 05-29-2018 09:43 AM |
How can a combine three seperate word documents into one? | hellno187 | Word | 0 | 09-20-2010 02:46 PM |