This turns out to be a weird one via ADO. If using an Excel automation object ("Excel.Application"

does the trick, maybe that'll be easier.
Here's an ADO example though in a WSH script:
IsWSEmpty.wsf
Code:
<job id = "IsWSEmpty">
<reference object = "ADODB.Connection"/>
<script language = "VBScript" src= "XLEmptySheet.vbs"/>
<script language = "VBScript">
Dim strWB, strSheet
strWB = "WorkBook.xls"
strSheet = "Sheet1"
MsgBox strWB & " (" & strSheet & ") Empty sheet = " _
& CStr(XLEmptySheet(strWB, strSheet))
</script>
</job>
XLEmptySheet.vbs
Code:
Function XLEmptySheet(ByVal strWBName, ByVal strSName)
'Test for empty Excel worksheet.
'
'strWBName - Path and file name of Excel workbook.
'strSName - Sheet name within the workbook.
'
'Return value - True empty worksheet else False.
Dim objConn, objRS, lngNulls
Set objConn = CreateObject("ADODB.Connection")
objConn.CursorLocation = adUseClient
objConn.Open _
"Provider = 'Microsoft.Jet.OLEDB.4.0';" _
& "Data Source = '" & strWBName & "';" _
& "Extended Properties = 'Excel 8.0;Hdr=No';"
Set objRS = _
objConn.Execute("[" & strSName & "$];", Null, adCmdTable)
XLEmptySheet = (objRS.RecordCount = 0)
If objRS.RecordCount = 2 Then
'Special case: empty sheet or sheet with only A1 or A2
'filled returns 2 rows, either or both of which may be Null!
objRS.MoveFirst
If IsNull(objRS(0)) Then lngNulls = lngNulls + 1
objRS.MoveNext
If IsNull(objRS(0)) Then lngNulls = lngNulls + 1
If lngNulls = 2 Then XLEmptySheet = True
End If
MsgBox CStr(objRS.RecordCount)
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
End Function
If you are using another script host or you can't use a WSF file for the main script, you'll need to make minor changes. You will have to define the ADO constants and you'll have to put the Function inline in the main script.
See the code for some weirdness! I had to see it to believe it myself. I tried sheets that were:
[ul][li]empty,
[li]that had only cell A1 filled,
[li]only cell A2 filled,
[li]only cell A3 filled,
[li]both A1 and A2 filled,
[li]A1 through A3 filled,
[li]only cell B1 filled,
[li]only B2 filled, ...[/ul]
Where there was stuff in column B or later all seemed normal. When there was an empty sheet or only something in A1 or A2 I always get back a rowcount of 2.
Weird, weird, weird. Can anybody explain it?