私はEDI領域内で作業しており、EDIFACTファイルを読みやすくするためにEDIFACTマクロのヘルプが必要です。
メッセージは次のようになります。
data'data'data'data'
構造を次のように変換するマクロが必要です。
data'
data'
data'
data'
plsは私にこれを行う方法を教えてくれます。前もって感謝します!
BRジョナス
VIM での置換 (UNOA 文字セットの標準 EDIFACT セパレーター/エスケープ文字が使用されていると仮定):
:s/\([^?]'\)\(.\)/\1\r\2/g
正規表現の分解: - (標準のエスケープ文字)を除く任意の文字の後に発生する which を
\([^?]'\)
検索し、これら 2 つの文字を最初のアトムとしてキャプチャします。これらは、各セグメントの最後の 2 文字です。- セグメント ターミネータに続く任意の 1 文字をキャプチャします (つまり、セグメント ターミネータが既に行末にある場合は一致しません)。'
?
\(.\)
次に、この行のすべての一致を、セグメント ターミネータと次のセグメントの先頭の間の新しい行に置き換えます。
そうしないと、次のようになる可能性があります。
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'
s care.'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'
Arby'
...
これの代わりに:
...
FTX+AAR+++FORWARDING?: Freight under Vendor?'s care .'
NAD+BY+9312345123452'
CTA+PD+0001:Terence Trent D?'Arby'
...
ファイルを読みやすい形式で表示したいだけの場合は、Softshare EDI Notepadをダウンロードしてみてください。X12、EDIFACT、および TRADACOMS 標準をサポートし、無料です。
これはあなたが探しているものですか?
Option Explicit
Dim stmOutput: Set stmOutput = CreateObject("ADODB.Stream")
stmOutput.Open
stmOutput.Type = 2 'adTypeText
stmOutput.Charset = "us-ascii"
Dim stm: Set stm = CreateObject("ADODB.Stream")
stm.Type = 1 'adTypeBinary
stm.Open
stm.LoadFromFile "EDIFACT.txt"
stm.Position = 0
stm.Type = 2 'adTypeText
stm.Charset = "us-ascii"
Dim c: c = ""
Do Until stm.EOS
c = stm.ReadText(1)
Select Case c
Case Chr(39)
stmOutput.WriteText c & vbCrLf
Case Else
stmOutput.WriteText c
End Select
Loop
stm.Close
Set stm = Nothing
stmOutput.SaveToFile "EDIFACT.with-CRLF.txt"
stmOutput.Close
Set stmOutput = Nothing
WScript.Echo "Done."