![]() |
|
#1
|
|||
|
|||
|
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!
|
|
|
|
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 |