Первый раз постер, поэтому, если есть какое-либо форматирование или рекомендации, которых я не соблюдал, пожалуйста, дайте мне знать, чтобы я мог это исправить.
Итак, я в основном запрашиваю у пользователя директорию с файлом 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")
Но это не меняет ошибку, я помню, что у меня было похожее на это, а затем изменил его, так как я читал, что вариант как уловка , на самом деле не так уж твердо уверен в том, что это за вариант.