VBScript初級

VBSの初心者です。簡単にまとめていきたいと思います。

VBS で csv 、テキストファイル を Excel に カンマ区切り で読み込ませ、Excel ファイルとして 保存する。 Workbooks.OpenText

 

見出しのとおり今回は

ドラッグ&ドロップでcsvファイルをexcelファイルに変換します。

コードは以下の通りです。


'Excelのインスタンスの作成
Set  iobj= WScript.CreateObject("Excel.Application")
'引数のファイルをインポート
iobj.Workbooks.OpenText WScript.Arguments(0),65001,1,1, ,False,False,False,True,False,False,False

Set books = iobj.ActiveWorkbook

'シートをオブジェクト変数に格納
Set inp=iobj.Sheets(1)

'FileSystemObjectのインスタンスの作成
set fso = createObject("Scripting.FileSystemObject")

'カレントディレクトリの取得
cdir=fso.getParentFolderName(WScript.ScriptFullName)

'名前を付けて保存
books.SaveAs cdir & "\csvtoexcel.xlsx" , 51

'ブックを閉じる
books.Close

'Excelの終了
iobj.Quit()

'インスタンスの解放
Set fso=Nothing
Set iobj=Nothing

 

 

 では、説明していきます。

 

まずは、Excelインスタンスを作ります。

 

次に、workbooksオブジェクトのopentextメソッドを使用して、ドラッグ&ドロップされたテキストファイルを読み込みます。

今回のopentextメソッドの中身は以下の通りです。

 

 

opentext ファイル名,文字コード番号,取り込み開始行,データ形式,文字列引用符,区切り文字の扱い,タブ区切り,セミコロン区切り,カンマ区切り,スペース区切り,任意の区切り文字

詳しくは下のリンクを見てください。 

 OpenText メソッド (Excel) | Microsoft Docs

 

 

ファイル名には今回、WScript.Arguments(0)が入っています。これは、WScriptオブジェクトのArgumentsプロパティです。

 

このWScript.Argumentsプロパティからは、WshArgumentsコレクションを参照できます。

 

そして、このWshArgumentsコレクションには、VBScript で起動時に指定された引数が保持されています。

 

今回はitemプロパティを使用しています。実際はWScript.Arguments.Item(0)ですがitemを省略しています。

 

カッコ内の0は第何引数かを表し、0が一つ目の引数を表します。0始まりなので気を付けましょう。

f:id:chacha07:20190410224410g:plain

第4回 WScriptオブジェクトの詳細(2) (2/4):Windows管理者のためのWindows Script Host入門 - @IT

残りの要素については説明のとおりです。

区切り文字のところをtrueにします。

 

後は、WScript.ScriptFullNameでフルパスを参照し、FileSystemObjectのgetParentFolderNameメソッドを使用して元ファイルのカレントディレクトリを取得します。

 

そして、任意のファイル名を付けて保存すれば完成です。最後に気を付けておきたいのは、SaveAsで指定している51という数字です。数字の意味は下表のとおりです。

xlWorkbookNormal -4143 ブックの標準 *.xls

xlOpenXMLWorkbook

51 XML ブックを開く *.xlsx
xlOpenXMLWorkbookMacroEnabled 52 マクロを有効にした XML ブックを開く *.xlsm

XlFileFormat 列挙体 (Excel) | Microsoft Docs