要对一个现成的EXCEL文件的中的内容进行处理.
遇到一个问题: EXCEL是无限表格,我没有办法得到表格中有效内容所占的实际行数和列数.
无论我用SHEET.Columns 还是Sheet.Cells.Columns,或者是访问ROWS属性.结果统统不可得.要么就是内存溢出,要么就是EXCEL对象出现自动化错误.由于我在做OFFICE方面的编程经验不是很丰富,一时无法解决. 又不想通过查询每一个格子内容的方法做(觉得那样效率太低), 所以想请教各位有经验的朋友,如果你知道如何解决我这个问题的话,请不吝赐教. 高分相酬!

解决方案 »

  1.   

    用vba宏可以做到吧msdn上的代码数组中的总行数和总列数
    在 Excel 中,可以使用数组来计算和操作工作表中的数据,还可以使用宏将某个范围内的单元格中的值存储到一个数组中。本节中的示例宏代码将在一个矩形单元格区域中添加一行和一列,以包含该区域中每一行和每一列中的单元格总数。具体的步骤是,代码从活动工作表上活动单元格周围的当前单元格区域中读取数据。宏将这些数据存储在一个数组中,计算每一行和每一列中的单元格总数,然后将输出显示在工作表中。数组的大小由当前区域中的单元格数量决定。 注意:此宏不会在工作表中添加任何公式,因此如果该范围内的单元格总数有变化,则必须重新运行宏。使用以下示例之前,请执行以下步骤: 1.
     打开一个新工作簿。 
     
    2.
     在“工具”菜单中,指向“宏”,然后单击“Visual Basic 编辑器”(或者简单地按下 ALT+F11 组合键)。在“Visual Basic 编辑器”中的“插入”菜单中,单击“模块”。 将以下示例代码键入或粘贴到模块中:Sub TotalRowsAndColumns()
    ' 此宏假定您已从
    ' 要计算单元格总数的矩形区域内
    ' 选择了一个单元格或一组单元格。行和列的单元格总数将出现在
    ' 当前区域下面的行和右侧的列中。Dim r As Integer
    Dim c As Integer
    Dim i As Integer
    Dim j As Integer
    Dim myArray As Variant' 将 myArray 声明为变量将使数组可以接收
    ' 一组单元格。此时,数组将自动转换为
    ' 以下标 myArray(1,1) 开始的数组。' 指当前所选单元格周围的区域。
    With Selection.CurrentRegion
    r = .Rows.Count
    c = .Columns.Count
    ' 重新计算总行数和总列数并将结果存储到数组中。
    myArray = .Resize(r + 1, c + 1)' 在下面的嵌套循环中,变量 i 跟踪
    ' 行号,变量 j 跟踪
    ' 列号。j 在可用列中每循环一次,
    ' i 就递增一,而 j 
    ' 则重新从一到 c 循环一次。
    For i = 1 To r
    For j = 1 To c
    ' 行 i 的总数
    myArray(i, c + 1) = myArray(i, c + 1) + myArray(i, j)
    ' 列 j 的总数
    myArray(r + 1, j) = myArray(r + 1, j) + myArray(i, j)
    ' 总计
    myArray(r + 1, c + 1) = myArray(r + 1, c + 1) + myArray(i, j)
    Next j
    Next i' 将数组返回工作表,数组中现在包含一个
    ' 新行和一个新列,用于存储总数。
    .Resize(r + 1, c + 1) = myArray
    End With
    End Sub 
    3.
     突出显示要求和区域中的一个单元格,在“工具”菜单中,指向“宏”并单击“宏”。 
     
    4.
     选择 TotalRowsAndColumns 宏,然后单击“运行”。 注意:要执行与本示例中的运算类似的运算,可以修改宏代码。例如,要对选定范围内的单元格中包含的值进行减法、乘法或除法运算,可以更改数学运算符。
     
      

  2.   

    一楼的方法我看了一下,应该是计算在EXCEL中鼠标选中区域的行数和列数吧?并非得到有数据的行数和列数呀
      

  3.   

    n = Sheet1.UsedRange.Rows.Count  '''自动获取行数endlie = Sheet1.UsedRange.Columns.Count   '''数据终止列看看这个呢?
      

  4.   

    http://topic.csdn.net/t/20011112/10/365999.htmlActiveSheet.UsedRange.Rows
      

  5.   

    使用WorkSheet对象的UsedRange属性:UsedRange 属性
    参阅应用于示例特性返回代表指定工作表上已使用区域的 Range 对象。只读。示例
    本示例选定 Sheet1 中的已用区域。Worksheets("Sheet1").Activate
    ActiveSheet.UsedRange.Select
      

  6.   

    如果是要获得一些特殊的单元也可以使用SpecialCells 方法:返回一个 Range 对象,该对象代表与指定类型及值相匹配的所有单元格。Range 对象。expression.SpecialCells(Type, Value)
    expression      必需。该表达式返回“应用于”列表中的一个对象。Type      XlCellType 类型,必需。要包含的单元格。XlCellType 可为以下 XlCellType 常量之一。 
    xlCellTypeAllFormatConditions 任意格式单元格 
    xlCellTypeAllValidation 含有验证条件的单元格 
    xlCellTypeBlanks 空单元格 
    xlCellTypeComments 含有注释的单元格 
    xlCellTypeConstants 含有常量的单元格 
    xlCellTypeFormulas 含有公式的单元格 
    xlCellTypeLastCell 使用区域中最后的单元格 
    xlCellTypeSameFormatConditions 含有相同格式的单元格 
    xlCellTypeSameValidation 含有相同验证条件的单元格 
    xlCellTypeVisible 所有可见单元格 Value      Variant 类型,可选。如果 Type 为 xlCellTypeConstants 或 xlCellTypeFormulas 之一, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。默认情况下,将选定所有常量或公式,对其类型不加区别。可为以下 XlSpecialCellsValue 常量之一:XlSpecialCellsValue 可为以下 XlSpecialCellsValue 常量之一。 
    xlErrors 
    xlLogical 
    xlNumbers 
    xlTextValues
     示例
    本示例选定工作表 Sheet1 中已用区域的最后一个单元格。Worksheets("Sheet1").Activate
    ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
      

  7.   

    http://office.9zp.com/dispbbs.asp?BoardID=3&replyID=2375&id=2375&skin=0