Excelのすべてのシートをテキスト出力するマクロ
Excelのすべてのシートをタブ区切りテキストでシートごとにファイル出力するマクロ。これは汎用性がありそうなのでここに貼っておこう。データに関係ない行は#を先頭につけておくとgnuplotがコメントと見なしてくれて幸せなかんじになります。
outdirに出力先のフォルダを指定、ファイル名はシート名+".dat"になってるので適当に変更して下さい。
Sub OutputTEXT() ' アクティブなワークブックのシートをすべてタブ区切りテキスト保存 Dim name As String Dim outdir As String Dim sheet As Worksheet outdir = "C:\work\tex\mthesis\graph\" '既にデータが存在する場合の上書き警告を非表示 Application.DisplayAlerts = False For Each sheet In Worksheets sheet.Select name = outdir & ActiveSheet.name & ".dat" ActiveWorkbook.SaveAs filename:=name, FileFormat:=xlText, CreateBackup:=False Next sheet '警告表示を戻す Application.DisplayAlerts = True End Sub
ついでにgnuoplot用のplotファイルの自動生成は個人的すぎるので特に使い道ないですけど参考までに
#!/bin/bash for type in "loss" "throuput" "watingtime" "hop" ; do for i in "sim1-${type}" "sim2-${type}" "sim3-${type}" ; do sed "s/DATNAME/$i/g" master-${type}.plot | gnuplot done done
#master-loss.plot #set parametric set xlabel "Traffic Load" # x軸の名前 set ylabel "Packet Loss Probability" # y軸の名前 set term postscript eps set term postscript enhanced set term postscript "Arial,9" set output "DATNAME.eps" # epsファイルの名前 set size 0.6,0.4 set xrange [0.0:1.0] # x軸の範囲 set yrange [1e-6:1] # y軸の範囲 set logscale y # y軸をlogスケールにする set format x "%0.1f" #x軸を小数1桁まで表示 set format y "1.0E%L" #y軸を指数形式にする set key outside plot 'DATNAME.dat' using 2:3 title " hoge" with linespoints,\ 'DATNAME.dat' using 2:4 title "hogehoge" with linespoints
master-*.plot中のDATNAMEのところが、sedでファイル名に置換されます。