excel2003
下記記述について。
現在、固定長ファイルから取り出す文字数を指定し、「2G」シートの「Eセル~」に出力しています。
Sub Sample()
vLeng = Array(5, 4, 6, 12, 12, 8, 23, 19, 1, 1, 6, 3, 13, 1, 12, 10, 1, 7, 20, 1, 3, _
30, 25, 25, 2, 7, 1, 8, 3, 1, 0, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _
6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _
6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, _
6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 6, 12, 8, 0, 100, 30, 1, 1, 10, _
10, 23, 1, 20, 8, 100, 100, 30, 25, 23, 20) '←取り出す文字数
For i = 1 To Sheets("貼付").Range("A" & Rows.Count).End(xlUp).Row
sString = Sheets("貼付").Range("A" & i).Text
sString = Replace(Replace(sString, " ", "*"), " ", "×")
nPos = 1
For j = 0 To UBound(vLeng)
Sheets("2G").Cells(j + 1, i + 4) = Mid(sString, nPos, vLeng(j))
nPos = nPos + vLeng(j)
Next j
Next i
End Sub
----------------------
うっかりしてたんですが、固定長ファイルの内容は全角・半角とあり、
全角の場合は1文字2バイト、半角の場合は1文字1バイトとして
カウントしていきたいのですが、可能でしょうか?
列ごとの条件は一緒です。
(例)
E1・・・半角 F1・・・半角
E2・・・全角 F2・・・全角
E3・・・全角 F3・・・全角
E4・・・半角 F4・・・半角
E5・・・全角 F5・・・全角
ご回答宜しくお願い致します。
お礼
ご回答ありがとうございます。 vbFromUnicode、BASP21を使用してみましたが、MIDB関数は正常に動作しませんでした。 (半角も2バイト換算で計算されてしまいます。) 文字列長であれば取得できるのですが、 何文字目を取り出すとなると、1文字ずつコードを見ていくしかないようです。 固定バイト長ファイルを使ってツールを作ろうと思ってたんですが、 1文字ずつみていくのでは処理が遅いので(といっても僅かでしょうが)、 固定文字数長ファイルにしようかと思っています。