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でファイル名に置換されます。