Ошибка VBA 1004 - не удалось выбрать метод класса диапазона

Первый раз постер, поэтому, если есть какое-либо форматирование или рекомендации, которых я не соблюдал, пожалуйста, дайте мне знать, чтобы я мог это исправить.

Итак, я в основном запрашиваю у пользователя директорию с файлом excel, затем устанавливаю некоторые переменные (изначально установленные как общедоступные переменные проекта, поскольку они использовались и изменялись в других местах). Я также добавил строки, чтобы обнулить эти переменные (на всякий случай, я не думаю, что это должно иметь значение). Затем я устанавливаю эти переменные в файл Excel, рабочую книгу и листы, к которым я хочу получить доступ.

Dim filepath as String
filePath = CStr(fileDialog)              'ask file dir, set to string
Dim sourceXL As Variant                  'these three were orig project variables
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant

Set sourceXL = Nothing                    'set to nothing in case...?
Set sourceBook = Nothing
Set sourceSheet = Nothing
Set sourceSheetSum = Nothing

Set sourceXL = Excel.Application          'set to the paths needed
Set sourceBook = sourceXL.Workbooks.Open(filePath)
Set sourceSheet = sourceBook.Sheets("Measurements")
Set sourceSheetSum = sourceBook.Sheets("Analysis Summary")

Dim measName As Variant                    'create variable to access later
Dim partName As Variant

sourceSheetSum.Range("C3").Select           'THIS IS THE PROBLEM LINE

measName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
sourceSheetSum.Range("D3").Select
partName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value

Итак, я создал две разные переменные листа 'sourceSheets' и 'sourceSheetsSum', код работает, если я использую 'sourceSheets', но возникает ошибка 1004, если я использую 'sourceSheetsSum'. Я также пробовал код с полностью удаленной переменной «sourceSheet», если по какой-то причине она переопределяла «sourceSheetSum».

Я вполне уверен, что рабочая книга и листы Excel существуют и вызываются правильно, так как я запустил небольшой фрагмент кода для перебора всех листов в рабочей книге и вывода имен, показанных ниже.

For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j

С выводом отладки

Измерения
Резюме анализа
Настройки анализа

Итак, есть ли у кого-нибудь какие-либо идеи, что может означать эта ошибка, или как я могу узнать больше о том, что на самом деле представляет собой ошибка?

РЕДАКТИРОВАТЬ: Поэтому я решил немного добавить в список имен листов, не уверен, что это вообще поможет.

For j = 1 To sourceBook.Sheets.Count
    listSheet(j) = Sheets(j).name
Next j    
Debug.Print (listSheet(2))    
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))

Отладка печатает сводку анализа, поэтому я знаю, что лист существует в рабочей книге, и не должно быть никаких проблем с «опечаткой» в именах.
Однако код по-прежнему имеет ту же ошибку в той же строке.

deusxmach1na: Я думаю, вы хотели, чтобы я изменил

Dim sourceXL As Variant                  
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant

Set sourceSheet = sourceBook.Sheets("Measurements")

на

Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet

Set sourceSheet = sourceBook.Worksheets("Measurements")

Но это не меняет ошибку, я помню, что у меня было похожее на это, а затем изменил его, так как я читал, что вариант как уловка , на самом деле не так уж твердо уверен в том, что это за вариант.

17
задан Community 9 July 2018 в 18:41
поделиться