My suspicion is that at least one sheet is empty and so the excelRange.get_Value is returning 'Empty' (which may get translated in .NET to string.Empty) rather than a two dimensional object array.
Also, as the Sheets collection is one-based, you should be iterating up to and including 'numSheets'.
So, I'd try:
private void Scansheets(Workbook wookBookIn)
{
int numsheets = wookBookIn.Sheets.Count;
for (int sheetNum = 1; sheetNum <= numsheets; sheetNum++)
{
Worksheet sheet = (Worksheet)wookBookIn.Sheets[sheetNum];
Range excelRange = sheet.UsedRange;
object temp = excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
if (temp != null && (temp is Array))
{
object[,] valArray = (object[,])temp;
foreach (object value in valArray)
if (value != null)
{
listBox1.Items.Add(value);
}
}
}
}