2016-07-25 59 views
0

我正在寫一個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

VBScript不支持像VBA這樣的隱式對象,因此您的Selection只是一個未定義的變量。如果沒有Option Explicit指令,未定義的變量將自動初始化爲Empty值,該值在MsgBox調用中自動轉換爲空字符串。

您需要指定爲您提供Selection屬性的對象。

MsgBox objExcel.Selection 

雖然這樣做會給你一個類型不匹配錯誤,因爲範圍不能轉換爲字符串。您需要使用適當的屬性,例如Address

MsgBox objExcel.Selection.Address 

你應該能夠調用TextToColumnsSelection財產,但:

objExcel.Selection.TextToColumns ... 

如果你想使用一個變量,您可以選擇分配到一個這樣的:

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

或者,您可以直接在範圍上使用TextToColumsn方法,而不必先選擇它:

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

非常有益的答案,謝謝。我遇到的另一個問題是我忘記了用它們的值替換「xlDelimited」和「xlDoubleQuote」常量。 – Pol0nium