【问题标题】:Find bottom of a column in Excel using VBScript使用 VBScript 在 Excel 中查找列的底部
【发布时间】:2018-01-10 09:15:33
【问题描述】:

我正在编写一个脚本,它将提取 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 是之前定义的整数。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    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
    

    【讨论】:

    • 美丽。非常感谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      相关资源
      最近更新 更多