我正在编写一个脚本,用于提取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是先前定义的整数。
答案 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