【问题标题】:Selecting Excel Cells with data in VBScript [duplicate]在VBScript中选择带有数据的Excel单元格[重复]
【发布时间】:2020-02-24 13:01:41
【问题描述】:

我一直在尝试仅使用 VBScript 代码来操作 Excel 文件。它是一个独立的 VBScript,可以打开和关闭 excel 文件。问题在于Range(Selection, Selection.End(xlDown)).Select 代码。当我在 excel 宏中运行此代码时,它会选择特定单元格中具有连续数据的所有行。正如我想要的那样。问题是当我尝试从 VBScript 运行此代码时。文件类型为.vbs

我在脚本中创建了 Excel 对象:Set objExcel = CreateObject("Excel.Application")。并且代码objExcel.Range("A5").select 正在选择正确的单元格。但是objExcel.Range(Selection, Selection.End(xlDown)).Select 什么也没做。当您按住 shift + ctrl 并在 Excel 中按向下箭头时,它具有相同的功能。当我在excel中录制宏并运行它时也没有问题,相同的代码在VBA中正常运行。正在选择行。唯一的问题是当我将该代码转换为独立的 VBScript 时,什么都没有发生。

我需要一种方法来选择包含数据的连续单元格。与ctrl+shift + 下、上、左、右相同。如果您知道任何其他实现它的方法,我可以接受。

【问题讨论】:

  • 尝试使用-4121 而不是xlDown
  • @BigBen 不鼓励使用“幻数”,只需在代码Const xlDown = -4121 中定义常量即可。
  • @Lankymart 同意了,干净多了。

标签: excel vba vbscript


【解决方案1】:

VBScript 不理解 VBA 设置使用的常量,例如 xlDown

您需要改为引用xlDown 的实际值,您可以从MS Docs site 获得该值

在您提到的这个特定实例中,常量值为-4121,因此您在vbscript 中的命令将是:

objExcel.Range(Selection, Selection.End(-4121)).Select i

但是,由于性能下降,您应始终尽量避免在 VBA/VBScript 中使用 Select,请查看 here 了解更多信息

【讨论】:

  • @IGRACH 这是link 枚举的具体link
  • 它仍然没有选择。 objExcel.Workbooks(File_Name).Activate objExcel.Range("A5").select objExcel.Range(Selection, Selection.End(-4121)).Select i 它不会通过objExcel.Range("A5").select 行。
  • 这不是第一次有been answered。甚至不得不在两年前复制标志one of my own。似乎 VBScript 已经有二十多年的历史,这并不奇怪。
【解决方案2】:

我在使用测试脚本时发现了这一点。

问题出在 xlDirection 上。当我开始使用文档中的数字时,代码开始工作。 objExcel.Range(Selection, Selection.End(-4121)).Select 中的 Selection 关键字也存在问题。它返回了Object required:'Selection'。我将objExel. 添加到Selection 的两个实例中:

objExcel.Range(objExcel.Selection, objExcel.Selection.End(-4121)).Select

它现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多