引数Numberで指定した数の半角スペースをバリアント型(内部処理形式String)
の値で返します。
Space関数を使って各列ごとの文字列のバイト数を揃える、つまり、一定の長さに
満たない文字列には後ろにスペースを足りないだけ追加する、といった使い方をすれ
ば、固定長のテキストファイルを作成することができます。
構文 Space(Number)
設定項目 内容
Number スペースの数を指定 [省略不可]
●サンプル●
Sub SpaceSamp1()
Dim i As Long, j As Integer
Dim myLen() As Integer
Dim myBuf As String
ReDim myLen(Range("A1").End(xlToRight).Column) As Integer
'---各列のバイト数を格納する、文字配列変数の要素数を定義
For i = 1 To Range("A1").End(xlToRight).Column
For j = 1 To Range("A1").End(xlDown).Row
If myLen(i) < LenB(StrConv(Cells(j, i), vbFromUnicode)) Then
myLen(i) = LenB(StrConv(Cells(j, i), vbFromUnicode))
'---各列での最大のバイト数を各列のバイト数にする
End If
Next j
Next i
Open ActiveWorkbook.Path & "\SpaceSamp.txt" For Output As #1
'---アクティブブックと同じフォルダに、テキストファイルを作成します
For j = 1 To Range("A1").End(xlDown).Row
For i = 1 To Range("A1").End(xlToRight).Column
myBuf = myBuf & Cells(j, i).Value & _
Space(myLen(i) - LenB(StrConv(Cells(j, i), vbFromUnicode)) + 1)
'---(1)Space関数を利用し、各列のバイト数が揃うようにスペースを追加
Next i
'---全ての列の値を連結した文字列をファイルに書き出す
Print #1, myBuf
'---次の行の処理の前に初期化
myBuf = ""
Next j
'---ファイルを閉じる
Close #1
End Sub
●解説●
(1)のステートメントで、各列の最大のバイト数からデータのバイト数を引いた値
に1を加算した数だけのスペースを、各データの末尾に追加し、固定長の文字列を作
成しています。Printステートメントについては、LineInputステートメントを参照し
てください。
実行結果については、作成されたテキストファイルをメモ帳などで開いて確認して
ください。
●注意●
Excelの標準の機能にもスペース区切りのファイルを作成する機能はありますが、
各列のバイト数は列幅により設定されるため、最悪の場合にはデータが失われるな
ど、致命的な不具合が発生する可能性があります。
|