проверка того, что файл с заголовком пуст
Я пишу код VBA, чтобы проверить, пусты ли какие-то файлы или нет. Все эти файлы имеют заголовки, поэтому я хочу проверить, является ли ячейка «A2» пустой или имеет нулевую длину. Мой код ниже, file1, dir1, dirfile1 – имя файла, каталог, путь. У меня также есть проблема, нужно ли мне открыть файл, чтобы получить доступ к его ячейке «A2».
Private Sub CommandButton2_Click() Dim file1, dir1, dirfile1 As String file1 = "NAMBS." & Range("f3") dir1 = Range("D11") dirfile1 = dir1 & "\" & file1 Range("F14").Clear If Len(Dir(dirfile1)) = 0 Then Range("F14") = "missing" Else Workbooks.Open (dirfile1) If IsEmpty(ThisWorkbook.Sheets(dirfile1).Range("a2")) Then Range("F14") = "empty" End If Workbooks(file1).Close End If End Sub
Ошибка msg – ошибка во время выполнения '9': подзаголовок вне диапазона. В принципе, я хочу получить доступ к ячейке «A2» в другой таблице и проверить, пустой или нет, а затем закрыть ее.
- Ошибка VBA Runtime 1004 on if
- Отправка рассылок вместо строк
- Метод сортировки VBA класса Range не удался
- Ошибка выполнения «9» при копировании рабочего листа в другую книгу
- Ошибка времени выполнения «7»: Недостаточно памяти
- Ошибка выполнения VBA 9
- Обновление: ошибка VBA 6 Переполнение при итерации по ключу в словаре
- Ошибка IWshShell3 VBA
- Результат OpenBSD Spreadsheet выводит сообщение «Общая ошибка» в OpenOffice при содержании большого количества строк
- Свойство Cells - Ошибка времени выполнения 91
- Экспорт XML-файла из Excel
- Коллеги получают ошибку 5 в Excel-файле с VBA, но тот же файл отлично работает на моем компьютере?
- Не удается открыть исходный файл сводной таблицы
Попробуйте установить переменную типа объекта рабочей книги при открытии файла.
Private Sub CommandButton2_Click() Dim file1 As String, dir1 As String, dirfile1 As String Dim wbo As Workbook With ThisWorkbook.ActiveSheet file1 = "NAMBS." & .Range("f3") dir1 = .Range("D11") dirfile1 = dir1 & "\" & file1 .Range("F14").Clear If Len(Dir(dirfile1)) = 0 Then .Range("F14") = "missing" Else Set wbo = Workbooks.Open(dirfile1) If IsEmpty(wbo.Sheets(1).Range("a2")) Then .Range("F14") = "empty" End If wbo.Close , False Set wbo = Nothing End If End With End Sub
Все ссылки на диапазон ячеек передаются обратно родителям, определяемым блоком With/End With
. В открытую рабочую книгу явно wbo
переменная wbo
назначенная для объекта рабочей книги.
Если эти файлы являются CSV, и все они имеют общий заголовок, проверьте размер файла для чего-либо большего, чем файл только для заголовка, и вам не придется открывать их, чтобы определить, заполнены ли они.