[vbaエラー]開始位置32916が有効ではありません。開始位置は32767以内で・・

本業終了後、夜な夜な得意先に導入されるEDIシステムへの対応プログラムを開発。

疲れたよ!

得意先から渡された仕様書を読むと

業界標準の流通BMIシステム

業界標準ってどういう意味かと思ったら、何のことは無い
全業種に対応するために無駄にたくさんの項目が用意されたテーブルを持つシステムでした!

水域・産地名・等級・養殖区分・解凍・部位・カラー名称・・・・

9割以上、加工食品卸業に関係ない項目。

すごくプログラムし難いんですけど、これ!

取り合えずEDIアップロード用「実出荷データ」を用意しcsvエクスポートテスト・・・

すると、見たことのないエラー

フィールドF134の開始位置32916が有効ではありません。
開始位置は32767以内で指定してください。

【VBAエラー】開始位置32916が有効ではありません。開始位置は32767以内で・・


何これ?

原因究明の為、項目文字数・項目数を変えながら何度もテストしたら・・・・・・

エラー原因、わかりました!

項目数が多すぎてMS-Access君がエクスポート用定義を作れないみたい!

なんだ、そんな原因ならTextStreamを使えばいいじゃん!

select caseで項目ごとの固定値も簡単に指定できる。

流通BMI開発は、TextStreamで楽勝ね!
逆に言えば、項目がバカみたいに多い流通BMI、
TextStreamを知らないと開発出来ません。

[vb] Private Sub btnEDIexp_Click()

Dim i As Integer
Dim FnameS As String

i = 0
FnameS = "C:\katabe\EDIupload.csv"

Dim FSO As New FileSystemObject
Dim f As File
Dim st As TextStream

Set st = FSO.CreateTextFile("C:\katabe\EDIupload.csv")

Dim cn As ADODB.Connection
Set cn = Application.CurrentProject.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

rs.Open "select * from QEDIエクスポートソース", cn, adOpenKeyset, adLockOptimistic

Dim myTEXT As String

myTEXT = ""

‘検証用ヘッダー部

For i = 1 To 188

If i = 188 Then
myTEXT = myTEXT & "F" & i
Else
myTEXT = myTEXT & "F" & i & ","
End If
Next i

st.WriteLine (myTEXT)

Do While rs.EOF = False
myTEXT = ""
For i = 0 To 187

Select Case i
Case 0
myTEXT = rs.Fields(i)
Case 4, 8, 9, 13, 26, 39, 45, 98, 100, 111, 123, 132, 139, 142, 145, 153, 161
myTEXT = myTEXT & "," & rs.Fields(i)
Case 5
myTEXT = myTEXT & ",00" ‘固定00
Case 19
myTEXT = myTEXT & ",03" ‘固定03
Case 33
myTEXT = myTEXT & ",02" ‘固定02
Case 66
myTEXT = myTEXT & ",999" ‘固定999
Case 84
myTEXT = myTEXT & ",00" ‘固定00
Case 89
myTEXT = myTEXT & ",01" ‘固定01
Case 133
myTEXT = myTEXT & "," & Date()
Case 155
myTEXT = myTEXT & ",1" ‘固定1
Case Else
myTEXT = myTEXT & ","
End Select

Next i

st.WriteLine (myTEXT)

rs.MoveNext

Loop

rs.Close
cn.Close

st.Close

Call Shell("notepad.exe C:\katabe\EDIupdate.csv", 1)

End Sub
[/vb]

これまでの物件は全てヘッダー・フッターが必要だった為、最初からTextStreamで開発してました。
その為、今回のエラーに遭遇しなかったのかな?

コメント

  1. うみがめのアバター
    うみがめ

    いつも興味深く拝読しております。
    流通BMS、自分はインポートファイルの作成プログラムしか作ったことがありませんが、
    仕様書を見ると毎回ため息が出ますね。
    (A3で印刷してもとても字が小さい)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA