概要
正規表現にマッチした部分をExcelに書き出す + プロットします。
参考:python版
使ったデータ
plot.txt
(1,100)
(2,200)
(3,300)
(4,400)
(5,500)
使った正規表現
"\((\d),(\d{3})\)"
コード
objExcel.Visible = False
にする場合は、スクリプトの最後でSave/SaveAs→Close→Quit(→Set X=Nothing)の流れで閉じるようにします。Quitを呼ばないとExcel.exeが残ります。
大してメモリ使わないし、サクッと終了するならSet X = NothingはなくてもOKです。
plot.vbs
'------ 本題とあまり関係ない部分 ここから ----
' スクリプトにドロップされたファイル名を取得する。
If Wscript.Arguments.Count > 0 Then
fname = Wscript.Arguments.Item(0)
Else
WScript.Echo "テキストファイルをドロップしてください"
WScript.Quit
End If
'オブジェクトの準備
Set objExcel = CreateObject("Excel.Application") 'Excel操作
Set objFso = CreateObject("Scripting.FileSystemObject") 'ファイル操作
Set objRegExp = CreateObject("VBScript.RegExp") '正規表現
Set objWshshell = CreateObject("WScript.Shell") 'Windowsシェル操作
objExcel.Visible = True 'Excelを見えるようにしておく(今回は手で閉じる,保存する)
objWshshell.AppActivate objExcel.Caption 'Excelを最前面にする
Set objSheet = objExcel.WorkBooks.Add().ActiveSheet 'アクティブなシートのオブジェクトを持っておく
'------ 本題とあまり関係ない部分 ここまで----
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 正規表現にマッチした部分をExcelに書き出す + プロットする
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' まずは、正規表現にマッチした部分をExcelに書き出す
objSheet.Cells(1,1).Select 'A1をアクティブセルにする
Set objInFile = objFSO.OpenTextFile(fname) '入力のテキストファイルを開く
Do While objInFile.AtEndOfStream <> True
str = objInFile.ReadLine ' 1行読む
objRegExp.pattern = "\((\d),(\d{3})\)" 'パターン設定
Set objMatchCol = objRegExp.Execute(str) '検索実行
If objMatchCol.Count > 0 Then
'マッチした場合
'マッチした部分をさらに分解する
Set objSubMatches = objMatchCol.Item(0).SubMatches
'Excelに書き出す
objSheet.Cells(objExcel.ActiveCell.Row, 1) = objSubMatches.item(0)
objSheet.Cells(objExcel.ActiveCell.Row, 2) = objSubMatches.item(1)
'セルを次の行に進めておく
objSheet.Cells(objExcel.ActiveCell.Row+1,1).Select
End If
Loop
objInFile.Close '入力のテキストファイルを閉じる
'次に、Excelに書き出したデータをプロットする
Set objChart = objSheet.ChartObjects.Add(120, 20, 200, 150) 'チャートオブジェクトを作る。
objChart.Chart.ChartType = 74 '散布図にする。xlXYScatterLines(74)
objChart.Chart.SetSourceData(objSheet.UsedRange) 'データソースに書き出した箇所を設定する