EDIdEv - Electronic Data Interchange Development

EDI Reader in MS Word

This is an example of a Visual Basic Script using the Framework EDI component in MS Word macro to translate and validate EDI files.


How it Works
  • Open the WordEdiTran.doc document with MS Word
  • Run the ReadEdiFile macro by going to the menu and selecting Tools, Macro, then select the file from the list of Macros, and then click on Run.
  • Enter a SEF file when prompted.
  • Enter the EDI file you wish to read when prompted.

After the translation is complete, the data of the EDI file will be displayed along with its descriptions, making it easier to understand as shown below.

You can change the description of the segments and elements in the SEF file with our SEF Manager utility to make their descriptions more detailed and specific so that they can be better understood.  For example, an N1 segment's generic description of Name can be changed to Ship-To Name.

For more details about editing a SEF file with our SEF Manager, please visit Creating an Implementation Guideline

After the translation, any errors found in the EDI file will be reported at the end of the document.  The Segment Index is the segment count location where the particular error occurred.

The Visual Basic Script

The VB Script source code of the macro can be accessed by going to the menu and selecting Tools, Macro, then Visual Basic Editor.

            Sub ReadEDIfile()
            ' ReadEDIfile Macro
            ' Macro created 5/3/2009 by edidev
                Dim oEdiDoc As ediDocument
                Dim oSegment As ediDataSegment
                Dim oElement As ediDataElement
                Dim oElements As ediDataElements
                Dim oSubElement As ediDataElement
                Dim oWarnings As ediWarnings
                Dim oWarning As ediWarning
                Dim oSchemas As ediSchemas
                Dim sPath As String
                Dim i As Integer
                Dim ii As Integer
                Dim sSefFile As String
                Dim sEdifile As String
                Dim nErrCount As Integer
                Set oEdiDoc = New ediDocument
                Set oSchemas = oEdiDoc.GetSchemas
                'enable read of modified description in SEF file
                oSchemas.Option(OptSchemas_IncludeText) = 1
                oEdiDoc.CursorType = Cursor_ForwardOnly
                sPath = Application.ActiveDocument.Path & "\"
                'get and load SEF file
                sSefFile = InputBox("Enter SEF filename", "SEF File", "810_4010_modified.SEF")
                oEdiDoc.LoadSchema sPath & sSefFile, Schema_Standard_Exchange_Format
                'get and load EDI file
                sEdifile = InputBox("Enter EDI filename", "EDI File", "810.X12")
                oEdiDoc.LoadEdi sPath & sEdifile
                'traverse EDI file
                Set oSegment = oEdiDoc.FirstDataSegment
                Do While Not oSegment Is Nothing
                    Selection.Font.Bold = wdToggle
                    Selection.TypeText oSegment.ID & " - " & UCase(oSegment.Description) & vbCrLf
                    Selection.Font.Size = 8
                    Selection.TypeText oSegment.SegmentBuffer + vbCrLf
                    Selection.Font.Bold = wdToggle
                    nElemCount = oSegment.Count
                    For i = 1 To nElemCount
                        Set oElement = oSegment.DataElement(i)
                        Set oElements = oElement.DataElements
                        nSubElemCount = oElements.Count
                        If nSubElemCount > 1 Then 'Composite Element
                            For ii = 1 To nSubElemCount
                                If Len(Trim(oSegment.DataElementValue(i, ii))) > 0 Then
                                    Set oSubElement = oElements.DataElement(ii)
                                    Selection.TypeText oSubElement.Description & ": "
                                    Selection.Font.Italic = wdToggle
                                    Selection.TypeText oSegment.DataElementValue(i, ii) & vbCrLf
                                    Selection.Font.Italic = wdToggle

                                End If
                        Else    'Not a composite element
                            If Len(Trim(oSegment.DataElementValue(i))) > 0 Then
                                Selection.TypeText oElement.Description & ": "
                                Selection.Font.Italic = wdToggle
                                Selection.TypeText oSegment.DataElementValue(i) & vbCrLf
                                Selection.Font.Italic = wdToggle
                            End If
                        End If
                    Selection.TypeText "" + vbCrLf
                    'get next segment
                    Set oSegment = oSegment.Next
                Selection.TypeText "" & vbCrLf
                Selection.TypeText "" & vbCrLf
                Selection.TypeText "" & vbCrLf
                Selection.Font.Bold = wdToggle
                Selection.TypeText "Error messages" & vbCrLf
                Selection.Font.Bold = wdToggle
                'check for errors
                Set oWarnings = oEdiDoc.GetWarnings
                nErrCount = oWarnings.Count
                If nErrCount > 0 Then
                    For i = 1 To nErrCount
                        Set oWarning = oWarnings.Warning(i)
                        Selection.TypeText oWarning.Description & " "
                        Selection.Font.Bold = wdToggle
                        Selection.TypeText "Segment Index:" & oWarning.SegmentIndex & vbCrLf
                        Selection.Font.Bold = wdToggle
                        Selection.TypeText "" & vbCrLf
                    Selection.TypeText "No errors found"
                End If

            End Sub

    Click here to evaluate the Framework EDI