统计Excel工作簿中空白文本的行数

我正在尝试编写一个VBScript,它打开一个Excel文件并计算列A中包含数据的所有行。 计数部分就是我所苦苦挣扎的,因为VBA中使用的许多内置函数在VBScript中不起作用。

Excel的COUNTA()工作表函数计算一个范围内的非空白单元格的数量。 将其与VBA Evaluate()函数结合起来,调用COUNTA()并将结果返回给脚本。 那么,这变得如此简单:

 Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Open "c:\path\to\your\workbook.xlsx" WScript.Echo "Rows with data in column A = " & objExcel.Evaluate("=COUNTA(A:A)") 

有蛮力的方法。 它会工作(不优雅或有效),但它会得到一个合理大小的文件完成的工作。

 Dim xlApp, xlBook, nonBlankCount Set xlApp = CreateObject("Application.Excel") Set xlBook = xlApp.Workbooks.Open("C:\File\Path\Workbookname.xlsx") xlApp.Visible = True xlBook.Sheets("Sheet1").Activate xlBook.Range("A1").Select nonBlankCount = 0 Do Until xlBook.Activecell = vbNullString nonBlankCount = nonBlankCount + 1 Activecell.Offset(1, 0).Select Loop Msgbox nonBlankCount 

让我知道这个是否奏效。

WorksheetFunctions仍然可以通过应用程序对象访问。
试试这个(我正在跳过开头部分):

 dim app, ws, rng set app = getobject(, "Excel.Application") set ws = app.activeworkbook.worksheets(1) set rng = app.Intersect(ws.UsedRange, ws.Columns(1)) msgbox app.WorksheetFunction.CountA(rng) 

CountA会给你一个给定范围内的非空单元格的数量。 (但它不会停留在第一个空单元上。)