First problem: Runtime error '462' : The remote server computer does not exist or is unavailable.
The problem here is to use:
- Late Biding:
Dim Smthg As Object or - Implicit links:
Dim Smthg As Range instead of Dim Smthg As Excel.Range or Dim Smthg As Word.Range
So, you need to fully qualify all the variables that you set (I did this in your code)
Second problem
You work with multiple instances of Word and you only need one to process multiple documents .
So instead of creating a new one every time with
Set WordApp = CreateObject("Word.Application")
You can get an open instance (if any) or create it using this code:
On Error Resume Next Set WordApp = GetObject(, "Word.Application") If Err.Number > 0 Then Set WordApp = CreateObject("Word.Application") On Error GoTo 0
And , as soon as you put this at the beginning of your proc, you can use this instance to the end for proc and to the end, exit it to avoid running multiple instances.
Here is your code viewed and cleaned up, look:
Sub Docs() Dim WordApp As Word.Application Dim WordDoc As Word.Document ' Control if folder exists, if not create folder If Len(Dir("F:\documents\" & Year(Date), vbDirectory)) = 0 Then MkDir "F:\documents\" & Year(Date) ' Get or Create a Word Instance On Error Resume Next Set WordApp = GetObject(, "Word.Application") If Err.Number > 0 Then Set WordApp = CreateObject("Word.Application") On Error GoTo 0 Workbooks("exampleworkbook.xlsm").Sheets("examplesheet").Range("A1:C33").Copy With WordApp .Visible = True .Activate Set WordDoc = .Documents.Add .Selection.PasteSpecial Link:=False, DataType:=wdPasteRTF, _ Placement:=wdInLine, DisplayAsIcon:=False End With With Application .Wait (Now + TimeValue("0:00:02")) .CutCopyMode = False End With With WordDoc .PageSetup.TopMargin = WordApp.CentimetersToPoints(1.4) .PageSetup.LeftMargin = WordApp.CentimetersToPoints(1.5) .PageSetup.BottomMargin = WordApp.CentimetersToPoints(1.5) .SaveAs "F:\documents\" & Year(Date) & "\examplename " & Format(Now, "YYYYMMDD") & ".docx" .Close End With ' export sheet 2 to Word Workbooks("exampleworkbook.xlsm").Sheets("examplesheet2").Range("A1:C33").Copy Set WordDoc = WordApp.Documents.Add WordApp.Selection.PasteSpecial Link:=False, DataType:=wdPasteRTF, _ Placement:=wdInLine, DisplayAsIcon:=False Application.Wait (Now + TimeValue("0:00:02")) With WordDoc .PageSetup.LeftMargin = WordApp.CentimetersToPoints(1.5) .PageSetup.TopMargin = WordApp.CentimetersToPoints(1.4) .PageSetup.BottomMargin = WordApp.CentimetersToPoints(1.5) .SaveAs "F:\files\" & Year(Date) & "\name" & Format(Now, "YYYYMMDD") & ".docx" .Close End With Application.CutCopyMode = False WordApp.Quit Set WordDoc = Nothing Set WordApp = Nothing ' Variables Outlook Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim rngTo As Excel.Range Dim rngCc As Excel.Range Dim rngSubject As Excel.Range Dim rngBody As Excel.Range Dim rngAttach1 As Excel.Range Dim rngAttach2 As Excel.Range Dim numSend As Integer On Error Resume Next Set objOutlook = GetObject(, "Outlook.Application") If Err.Number > 0 Then Set objOutlook = CreateObject("Outlook.Application") On Error GoTo 0 Set objMail = objOutlook.CreateItem(0) ' Outlook On Error GoTo handleError With Sheets("Mail") Set rngTo = .Range("B11") Set rngCc = .Range("B12") Set rngSubject = .Range("B13") Set rngBody = .Range("B14") Set rngAttach1 = .Range("B15") Set rngAttach2 = .Range("B16") End With With objMail .To = rngTo.Value .Subject = rngSubject.Value .CC = rngCc.Value '.Body = rngBody.Value .Body = "Hi," & _ vbNewLine & vbNewLine & _ rngBody.Value & _ vbNewLine & vbNewLine & _ "Kind regards," .Attachments.Add rngAttach1.Value .Attachments.Add rngAttach2.Value .Display Application.Wait (Now + TimeValue("0:00:01")) Application.SendKeys "%s" ' .Send ' Instead of .Display, you can use .Send to send the email _ or .Save to save a copy in the drafts folder End With numSend = numSend + 1 GoTo skipError handleError: numErr = numErr + 1 oFile.WriteLine "*** ERROR *** Email for account" & broker & " not sent. Error: " & Err.Number & " " & Err.Description skipError: On Error GoTo 0 MsgBox "Sent emails: " & numSend & vbNewLine & "Number of errors: " & numErr, vbOKOnly + vbInformation, "Operation finished" GoTo endProgram cancelProgram: MsgBox "No mails were sent.", vbOKOnly + vbExclamation, "Operation cancelled" endProgram: Set objOutlook = Nothing Set objMail = Nothing Set rngTo = Nothing Set rngSubject = Nothing Set rngBody = Nothing Set rngAttach1 = Nothing Set rngAttach2 = Nothing End Sub