使用VBScript在Excel中查找列的底部

时间:2018-01-09 15:38:52

标签: vbscript

我正在编写一个脚本,用于提取Excel电子表格中列的内容。由于我不知道有多少行会有数据,因此我需要能够在脚本的过程中找到列的末尾。

在VBA中,我会使用像

这样的东西
sht.Range(sht.Cells(row, col), sht.Cells(row, col)).End(xlDown).row

当我尝试在VBScript文件中使用该行时(我知道它可能不起作用,但我希望能有一些好运)​​,一条消息回来说' xlDown'未定义。我可以轻松地创建一个Excel宏来执行此操作,但我希望程序无需更改原始电子表格即可运行。

这是我当前脚本的一部分,我定义了Excel对象

Set fso = CreateObject("Scripting.FileSystemObject")
set xlapp = CreateObject("Excel.Application")
Set wkbk = xlapp.Workbooks.Open(path)
'xlapp.Visible = False
Set sht = wkbk.Sheets(sheetname)
Set myfile = fso.OpenTextFile(txtfile, 2, True)
lrow = sht.Range(sht.Cells(row, col), sht.Cells(row, col)).End(xlDown).row

path,sheetname和txtfile是先前定义的字符串,而row和col是先前定义的整数。

2 个答案:

答案 0 :(得分:2)

xlDown实际上是一个常量。如上所述HERE,它的值为-4121。 所以试试像,

const xlDown = -4121
lrow  = sht.Range(sht.Cells(row, col), sht.Cells(row, col)).End(xlDown).row

或者您也可以在以下代码中使用xlUp来获取列的行数,如列A:

const xlUp = -4162
lrow = sht.Range("A" & sht.Rows.Count).End(xlUp).Row

答案 1 :(得分:1)

很高兴它有效。这是一个简单的,它将为您提供工作表 sht

的使用范围内的行数
lrow = sht.UsedRange.Rows.Count