使用 VBS 清除变量 Excel 范围时出错

Errors when clear variable Excel range using VBS

我有一个复制现有 sheet 的 VBS 脚本,我需要清除单元格的动态范围(取决于打开的特定 excel 工作簿)

我可以在硬编码时清除范围:

Set xl                      = CreateObject("Excel.application")
fso.CopyFile strFileSelect, fso.GetParentFolderName(strFileSelect) & "\Newversion.xlsm"

wshShell.Run """" & fso.GetParentFolderName(strFileSelect) & "\Newversion.xlsm"""

xl.Application.Sheets("Auto").Range("E15:BP142").ClearContents 

但是当我尝试时出现错误

xl.Application.Sheets("Auto").Range(Cells(15, 5), Cells(142, 67)).ClearContents

其实我最终是想根据Range的两个数组的UBound来清除范围,比如:

xl.Application.Sheets("Auto").Range("E15", .Cells((UBound(ArrayText)+1), (((UBound(ArrayStepText) + 1) * 2) + 5))).ClearContents

我也尝试过使用单元格而不是 .cells,尝试过

set r = Range("E15", Cells(142,67))

并清除 r,这也不起作用。

我也不能使用 xlUp 或类似的东西,因为在我的数组范围之后有隐藏和受保护的单元格

有个类似的问题

VBS for excel: Using a script variable in Range selection

但我无法使用字符串的重建,因为我不知道它结尾的列字母并且必须进行查找 table 以确定来自 UBound 的列字母数组和那个数字可以达到 128.

肯定有更简单/更有效的方法吗?

谢谢

像这样的东西应该可以工作(未经测试):

newPath = fso.GetParentFolderName(strFileSelect) & "\Newversion.xlsm"
fso.CopyFile strFileSelect, newPath

Set xl = CreateObject("Excel.application")
set wb = xl.Workbooks.open(newPath)
set sht = wb.Sheets("Auto")

set rng = sht.Range(sht.Range("E15"), _
          sht.Cells((UBound(ArrayText)+1), _
          (((UBound(ArrayStepText) + 1) * 2) + 5)))

rng.clearcontents

感谢 comintern:

endRow    =    UBound(ArrayCriteria) + 14
endColumn =    UBound(ArrayText) + 4
xl.Range(xl.Application.Sheets("Auto").Cells(15,5),xl.Application.Sheets("Auto").Cells(endRow,endColumn).clearContents

指定为Excel范围,然后指定范围从excel申请开始,具有完整资格