无法选择范围

时间:2016-07-25 13:04:41

标签: excel vbscript

我正在编写一个VBScript,以递归方式将文件夹中的每个CSV转换为xlsx文件。我想根据CSV文件中的分隔符分隔这些xlsx文件中的数据。

相关代码如下:

Set objWorkbook = objExcel.Workbooks.open(srccsvfile)
Set objWorksheet1 = objWorkbook.Worksheets(1)
objWorksheet1.Activate
objWorksheet1.Range("A:A").Select
MsgBox Selection '<<< Here the MsgBox is empty
Selection.TextToColumns objWorksheet1.Range("A1"), xlDelimited, xlDoubleQuote, False, False, False, False, False, True, "|"

我的问题是函数TextToColumns什么也没做,因为Selection是空的。

如何解决此问题?

(脚本是从.vbs文件执行的,而不是从Excel调试器执行的。)

1 个答案:

答案 0 :(得分:1)

VBScript不支持像VBA这样的隐式对象,因此Selection只是一个未定义的变量。如果没有Option Explicit指令,则使用Empty值自动初始化未定义的变量,该值在MsgBox调用中自动转换为空字符串。

您需要指定为您提供Selection属性的对象。

MsgBox objExcel.Selection

这样做会给你一个类型不匹配错误,因为范围不能转换为字符串。您需要使用适当的属性,例如Address

MsgBox objExcel.Selection.Address

您应该可以在TextToColumns媒体资源上调用Selection

objExcel.Selection.TextToColumns ...

如果您想使用变量,可以将选择分配给如下:

Set selection = objExcel.Selection
selection.TextToColumns ...

或者,您可以直接在范围内使用TextToColumsn方法,而无需先选择它:

objWorksheet1.Range("A:A").TextToColumns ...