Плакат первого раза, поэтому, если есть какое-либо форматирование или рекомендации, к которым я не смог присоединиться, сообщите мне, чтобы я мог это исправить.
Итак, я в основном прошу пользователя создать каталог файлов 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
С отладочным выходом
Измерения
Резюме анализа
Настройки анализа
Итак, есть ли у кого-нибудь идеи, что может означать эта ошибка, или как я могу найти больше о том, что такое ошибка на самом деле?
EDIT: Поэтому я решил добавить немного к списку имен листов, не уверен, что это вообще поможет.
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")
To
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
Но это не меняет ошибки, я помню, что у меня было это похоже на это, а затем изменил его, так как я читал, что этот вариант похож на уловку, а не на то, что твердое в каком варианте.