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
では、説明していきます。
次に、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始まりなので気を付けましょう。
第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