rotunda Windows 10
Office 2019
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.
06-09-2021, 03:47 PMGuessed Windows 10
Office 2016
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
Set aRng = objNewDoc.Range aRng.Collapse Direction:=wdCollapseEnd aRng.FormattedText = objDoc.Range.FormattedText
As an aside, you can merge multiple files like this without code.
1. Create a new document
2. Go to Insert > Object > Text from File
3. Pick multiple files (Select and Shift+Select)
4. Click OK
macropod Windows 10
Office 2016
For comprehensive document-combining code, see the Combine Multiple Word Documents 'Sticky' thread: https://www.msofficeforums.com/word-. documents.html
__________________gmayor Windows 10
Office 2019
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:
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