2016-07-25 9 views
0

フォルダ内のすべてのCSVをxlsxファイルに再帰的に変換するVBScriptを作成しています。私はこれらのxlsxファイルのデータを、CSVファイルの区切り文字に従って区切りたいと思います。範囲を選択できません

関連するコードは以下の通りです:

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, "|" 

私の問題はSelectionが空であるため、機能TextToColumnsは何もしないということです。

この問題を解決するにはどうすればよいですか?

(スクリプトは.vbsファイルから実行され、Excelデバッガからは実行されません)。

答えて

1

VBScriptはVBAのような暗黙オブジェクトをサポートしていないため、Selectionは単なる未定義の変数です。 Option Explicitディレクティブがなければ、未定義の変数はEmptyの値で自動初期化され、MsgBox呼び出しで自動的に空の文字列に変換されます。

Selectionプロパティを提供するオブジェクトを指定する必要があります。

MsgBox objExcel.Selection 

これを行うと、範囲を文字列にキャストできないため、タイプミスマッチエラーが発生します。適切なプロパティを使用する必要があります(例: Address

MsgBox objExcel.Selection.Address 

あなたはしかし、Selection性質上TextToColumnsを呼び出すことができる必要があります:

objExcel.Selection.TextToColumns ... 

変数を使用したい場合は、このようなものに選択を割り当てることができます。

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

またはTextToColumsnメソッドを最初に選択することなく範囲で直接使用することができます。

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

非常に有益な回答です、ありがとうございます。私が持っていたもう一つの問題は、 "xlDelimited"と "xlDoubleQuote"定数をその値で置き換えるのを忘れてしまったことです。 – Pol0nium

関連する問題