Home » excel » VBA Type mismatch error when setting Excel Range in Word

VBA Type mismatch error when setting Excel Range in Word

Posted by: admin April 23, 2020 Leave a comment

Questions:

I have the following code as part of my sub trying to assign a range:

'Set xlApp = CreateObject("Excel.Application")

Dim xlApp As Object
Set xlApp = GetObject(, "Excel.Application")
xlApp.Visible = False
xlApp.ScreenUpdating = False

Dim CRsFile As String
Dim CRsMaxRow As Integer

' get the CR list
CRsFile = "CRs.xls"
Set CRsWB = xlApp.Workbooks.Open("C:\Docs\" + CRsFile)
With CRsWB.Worksheets("Sheet1")
  .Activate
  CRsMaxRow = .Range("A1").CurrentRegion.Rows.Count

  Set CRs = .Range("A2:M" & CRsMaxRow)

End With

Dim interestingFiles As Range

' get the files names that we consider interesting to track
Set FilesWB = xlApp.Workbooks.Open("files.xlsx")
With FilesWB.Worksheets("files")
    .Activate
    Set interestingFiles = .Range("A2:E5")
End With

Do you have any idea why am I getting a run time type mismatch error?

How to&Answers:

If you run the code from Word then the problem is in the declaration of ‘interestingFiles’ variable. Range exist in Word as well so use either Variant or add reference to Excel and then use Excel.Range.

Without Excel reference:

Dim interestingFiles As Variant

And with Excel reference:

Dim interestingFiles As Excel.Range

Answer:

Kindly set xlApp object as in below code.
Also you provide complete path for your workbook when opening it.

Sub test()
        Dim interestingFiles As Range
        Dim xlApp As Object

        Set xlApp = GetObject(, "Excel.Application")
        ' get the files names

        Dim path As String
        path = "C:\Users\Santosh\Desktop\file1.xlsx"

        Set FilesWB = xlApp.Workbooks.Open(path)
        With FilesWB.Worksheets(1)
            .Activate
            Set interestingFiles = .Range("A2:E5")
        End With

    End Sub