检查 header 的文件是否为空

checking whether a file with header is empty

我正在编写 VBA 代码来检查其他一些文件是否为空。这些文件都有 headers 所以我想检查 "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

错误消息是 run-time 错误“9”:下标超出范围。基本上,我想访问另一个 table 中的 "A2" 单元格并检查是否为空,然后关闭它。

尝试在打开文件时设置工作簿 object 类型变量。

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 块确定的 parent。打开的工作簿由分配给工作簿 object.

wbo 变量明确引用

如果这些文件是 CSV 并且它们都有一个共同的 header,则检查文件大小是否大于 header-only 文件,您不必打开它们来确定是否他们人口众多。