VB 2008 - Lezen uit word 2007, probleem met regels

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op dit moment bezig met een EDIFACT-applicatie. De omschrijving van EDIFACT staat in een Word-document welke ik wil inlezen in een een tabel. Onderstaand een stukje van de tabel:

http://www.freeimagehosting.net/image.php?0c812950be.jpg

Met onderstaande code lukt het wel om data uit te lezen:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
        Dim a As New Word.Application
        Dim b As Word.Document = a.Documents.Open("D:\Test.docx")
        Dim t As Word.Table
        Dim c As Word.Cell
        Dim i As Integer = 0
        Dim str As String


        Dim intFound As Integer = 0
        Dim rng As Word.Range = b.Range

        Dim test(1000) As String

        t = b.Range.Tables(1)

        'MsgBox(t.Rows.Count)
        c = t.Cell(2, 1)
        'Me.TextBox1.Text = c.Range.Text

        'test(1000) = c.Range.Text.
        'MsgBox(c.Range.Text)

        Dim sLines() As String, N As Long

        sLines = Split(c.Range.Text, vbTab)

        For N = 0 To UBound(sLines)

            If i = 0 Then
                str = sLines(N)
            ElseIf i = 1 Or i = 2 Or i = 3 Then
                str += sLines(N)
            End If

            i += 1

            If i = 3 Then
                MsgBox(str)
                str = ""
                i = 0
            End If


            'MsgBox(sLines(N))

        Next N

   

        a.Quit()

      
    End Sub


Wanneer ik de tekst uit de eerste column van de tabel in een textbox laat plaatsen, dan wordt niet alles netjes onder elkaar geplaatst zoals in het word-document, maar komt alles achter elkaar. Ik heb geprobeerd te splitten op vbnewline, maar dan blijkt dat deze er niet in zitten. Wel zitten er veel tabs in en ik kan hier ook op splitten, maar zo krijg ik nooit wat ik wil. Ik wil regel voor regel kunnen (eerst splitten met regex) inlezen. Het vreemde is wanneer ik de tekst in een msgbox laat plaatsen deze wel netjes onder elkaar wordt weergegeven. Weet er iemand hoe ik dit kan oplossen? Wanneer de omschrijving nog niet helemaal duidelijk is hoor ik dat graag.


-- Edit sorry, plaatje doet het niet direct in bericht. Link wel bereikbaar

[ Voor 3% gewijzigd door Verwijderd op 13-02-2010 11:52 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Edifact is een bekende standaard die je zo kan vinden op internet. Waarom zou je dit uit een word-bestand gaan lezen als er vast veel betere bronnen zijn? :)

Voor de rest is het zonder een stukje van het document te zien of de daadwerkelijke tekens te zien erg lastig om hier een antwoord op te geven. Je kan trouwens ook gewoon vanuit Word's VBA werken, dat werkt denk ik makkelijker, zeker voor iets dat maar 1 keer hoeft te gebeuren.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 11-09 18:27
Wat ik je wil aanraden is om het stukje tekst wat je wil splitten te selecteren en te kopieren/plakken naar een editor als Notepad++ en dan alle tekens in Notepad++ laten weergeven. Dan kan je zien welk teken gebruikt is voor de nieuwe regel. De vbNewLine bevat waarschijnlijk een Carriage Return en Linefeed en als er een ander teken gebruikt is voor de nieuwe regel gaat dat niet werken.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
pedorus schreef op zaterdag 13 februari 2010 @ 12:10:
Edifact is een bekende standaard die je zo kan vinden op internet. Waarom zou je dit uit een word-bestand gaan lezen als er vast veel betere bronnen zijn? :)

Voor de rest is het zonder een stukje van het document te zien of de daadwerkelijke tekens te zien erg lastig om hier een antwoord op te geven. Je kan trouwens ook gewoon vanuit Word's VBA werken, dat werkt denk ik makkelijker, zeker voor iets dat maar 1 keer hoeft te gebeuren.
Dit is niet het edifact bericht zelf maar een omschrijving voor de betreffende verbinding.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
urk_forever schreef op zaterdag 13 februari 2010 @ 12:40:
Wat ik je wil aanraden is om het stukje tekst wat je wil splitten te selecteren en te kopieren/plakken naar een editor als Notepad++ en dan alle tekens in Notepad++ laten weergeven. Dan kan je zien welk teken gebruikt is voor de nieuwe regel. De vbNewLine bevat waarschijnlijk een Carriage Return en Linefeed en als er een ander teken gebruikt is voor de nieuwe regel gaat dat niet werken.
Goede tip! Ga ik mee aan de slag :)