excelファイルからデータをテキストファイルにタブ区切りで取り出すスクリプトです。いろんなところの継ぎはぎでできています。
ローカルに保存しておくよりはここで供養。というかもうVB書きたくない。
使い方
読み込むexcelファイルを閉じ、最初の行に読み込むexcelファイルの名前に変えて適当な同じディレクトリに保存するか、3行目の変数に絶対パスで入れちゃってください。vbsがあるディレクトリにシート.txtの形でテキストが出力されます。終わると正常終了というダイアログが出るので、それまでそのテキストは開かないでください。
区切り文字を変えればほかの形式も可能です。
貧相なマシンでも、詰め込まれたexcelファイルでも動くように非表示にしています。動いているかどうかはタスクマネージャーを見てexcelのプロセスが仕事してるかどうかを見てください。Windows95, 98, Meという試された環境では確認できません。ごめんなさい。
ソース
吸出し.vbs
Dim ExcelFile: ExcelFile = "test.xlsx"
Dim Delimiter: Delimiter = vbTab
Dim Path: Path = CreateObject("WScript.Shell").CurrentDirectory & "\" & ExcelFile
Dim objXls, objWorkbook
Set stream = CreateObject("ADODB.Stream")
stream.Charset = "UTF-8"
Set objXls = CreateObject("Excel.Application")
If objXls Is Nothing Then
WScript.Echo "起動失敗。。。終了します。"
WScript.Quit
End If
objXls.Application.Visible = False
Set objWorkbook = objXls.Workbooks.Open(Path)
For i = 1 To objWorkbook.Sheets.Count
stream.Open
Set objWorksheet = objWorkbook.Sheets(i)
If objWorksheet.Visible = False Then
objWorksheet.Visible = True
End If
Set objRange = objWorksheet.UsedRange
If Err.Number > 0 Then
WScript.Echo "Open Error"
Else
For intR = 1 To objRange.Rows.Count
For intC = 1 To objRange.Columns.Count
stream.WriteText objRange(intR, intC).Text & Delimiter, 0
Next
stream.WriteText vbCrLf, 0
Next
stream.SaveToFile objWorksheet.Name & ".txt", 2
End If
stream.Close
Next
objXls.Application.DisplayAlerts = False
objWorkbook.Close
objXls.Quit
Set objWorkbook = Nothing
Set objXls = Nothing
WScript.Echo "正常終了"