目的
excel2007で4.0シートが使えなくなったのでエクセルから可変長ファイルでasへ転送を可能にする
excel2007-->csv--pcom-->asの実現
excelはブランクセルがあり列の文字数字の判定が難しい。あらかじめ数字列のブランクに0を埋め込むことで判定は可能だがasの転送記述をもとに転送するので同じ基準で転送した方が間違いが少ないと
思われる
まず転送記述FDFから文字数字の判定を切り出す
fdfとは
PCFDF
PCFT 3
PCFO 1,1,3,1,1
PCFL KOTE 1 5
PCFL REC 2 7
PCFL JMHN 1 10
PCFL HRHN 1 12
PCFL BIKO 1 12
PCFL DESC 1 3
PCFL HN83 1 3
PCFL MF 1 2
PCFL NDT 2 9
PCFL BSU 2 12/3
PCFL BM 1 2
転送記述であるが スペースで区切った3項目目1が文字2が数字をあらわす
4行目からフィールドの判定項目が始る
結果はstrswsという文字列に書き出す
strsws="121111112222" ←こんな感じの結果
Sub callfdf(in_file As String, strsws As String)
'fdffile asの転送記述ファイル,
Dim frm(255)
'in_file = "パス\hr01.fdf"
'** ファイルオープン
FNO = FreeFile
Open in_file For Input As FNO Len = 32000
x = 1
Do Until EOF(FNO)
Line Input #FNO, rec
'4行目から処理
If x >= 4 Then
len1 = Len(rec)
Count1 = 0
For i = 1 To Len(rec)
If Mid(rec, len1 - i, 1) = " " Then Count1 = Count1 + 1
'右から読み込んで2番目のスペースの左から1ケタ分読み込む
'PCFL MF 1 1 mf=フィールド名,文字数字種別,桁数 文字数字種別1=文字、2=数字
If Count1 = 2 Then
frm(x - 3) = Mid(rec, len1 - i + 1, 1)
Exit For
End If
Next
End If
x = x + 1
Loop
Dim y As Integer
'読みだした配列を文字列に書き出す
For y = 1 To 255
strsws = strsws & frm(y)
len2 = Len(strsws)
Next
Close FNO
End Sub
0 件のコメント:
コメントを投稿