CHill60
Отладьте свой код - если вы не уверены, как это сделать, то следуйте инструкциям здесь Учебник: отладка кода Visual Basic - Visual Studio | Microsoft Docs[^]
Посмотрите на строку кода, которая вызывает исключение
rng = xlsheet.Range("A").EntireColumn
В этой строке есть только две вещи, которые не являются частью синтаксиса языка, и это переменные
rng
и
xlsheet
. Вы пытаетесь присвоить значение
rng
и он был должным образом объявлен в рамках этого кодекса, так что вряд ли это будет так. Так что взгляните на это
xlsheet
. Ему присваивается значение (мы думаем) в строке выше этого
xlsheet = CType(xlWorkbook.Sheets(level), Excel.Worksheet)
Исключив переменную в отладчике, вы, вероятно, обнаружите, что это "ничто". Получение ценности в
xlsheet
зависит от нескольких других переменных -
xlWorkbook
и
level
Если
level
я бы ожидал, что это была строка, которая вызвала исключение (листы excel начинаются с 1). Но если вы исследуете
xlsheet
в вашей IDE / отладчике вы, вероятно, обнаружите, что это "ничто". Честно говоря, я не уверен, почему вы используете CType там - Sheets(n) вернет Excel.Однако это преобразование кажется излишним.
Предполагая уровень <> 0, то линия выше
xlWorkbook = xlApp.Workbooks.Open(Path)
нужно, чтобы на него посмотрели. В вашем отладчике так и есть
xlWorkbook
имеют значение, и это имя этой книги "AA.xlsx-что? Потому что вы не указали a
путь в
Dim Path As String = "AA.xlsx"
Вы можете значительно облегчить себе жизнь, отслеживая ошибки, используя Хорошо построенные и продуманные методы обработки ошибок. Эта статья является хорошей отправной точкой
Рекомендации по обработке исключений в .NET[
^] - большинство примеров приведены на языке C#, но эти слова применимы к любому языку. VB.NET в конце статьи есть отдельный раздел, но не сразу переходите к нему - читайте принципы