• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Enter negeren bij txt import

Status
Niet open voor verdere reacties.

shulskamp

Gebruiker
Lid geworden
27 nov 2009
Berichten
6
Weet iemand hoe de enter uit een txt bestand (weergegeven als □ in het txt bestand) kan negeren als ik dit rapport importeer in excel?
(importeren via: data -> externe gegevens importeren -> gegevens importeren).

Het probleem: de enter in de regel breekt de regel in tweeen en zet de rest van de tekst in een rij eronder. Dit heeft gevolgen voor de rest van de data en de macro die de data vervolgens verwerkt.
 
Laatst bewerkt:
Beste Stijn,

Ik denk dat de oplossing vooral zal liggen in het opbouwen van het tekstbestand. Kun je ervoor zorgen dat daarin geen enters komen te staan?

Richard
 
Misschien is dit ook een optie.

Ctrl+H, en zoeken naar = (Alt+0141), en vervangen door niets (leeg laten) in je tekst bestand.
 
Beste Stijn,

Ik denk dat de oplossing vooral zal liggen in het opbouwen van het tekstbestand. Kun je ervoor zorgen dat daarin geen enters komen te staan?

Richard


Beste Richard,

Het txt-bestand wordt automatisch opgebouwd door een calculatieprogramma.
Misschien dat het voorkomen van een enter tijdens de export een oplossing is. Wellicht lukt dat via hun programeerafdeling.

Omdat er heel veel mogelijk is via excel dacht ik het via de import te kunnen regelen.

Bedabkt voor je reactie,
Stijn
 
Misschien is dit ook een optie.

Ctrl+H, en zoeken naar = (Alt+0141), en vervangen door niets (leeg laten) in je tekst bestand.

Harry,
Dank voor je reactie.
Het txt-bestand wordt automatisch gegenereerd en ook zonder tussenkomst van een "mens" geopend in excel.

De technische stappen:
-Via het calculatie-programma wordt een CSV geopend
-de CSV roept de gegevens op uit het calc.programma en schrijft weg naar een txt
-de CSV opent een excel-bestand (met daarin een aantal macro's)
-Excel importeert de txt via een macro.
-hierna wordt een rapport gegenereerd.

Probleem hier bij:
De enter zorgt ervoor dat een tekst in excel in meerdere cellen verdeeld wordt.

Helaas zijn de vrijheden wat beperkt door de automaat. Het voordeel: het werkt erg makkelijk en levert in dit geval een leuke uitdaging op.

Stijn
 
misschien met een stukje vba?
Het daadwerkelijke uitsplitsen van de code zul je dan zelf even moeten doen, gezien ik geen idee heb van het format van het
text-bestand
Code:
Sub test()
Dim sFileText As String
Dim iFileNo As Integer
  
  iFileNo = FreeFile
      'open het bestand om te lezen
  Open SelectFile For Input As #iFileNo

      'lees het bestand regel voor regel door tot het eind
  Do While Not EOF(iFileNo)
    Input #iFileNo, sFileText
      'Plaatst tekst in message-boxes
      'dit deel vervangen door welke acties je met het bestand wilt uitvoeren
      'om tekst te splitsen/groeperen kun je gebruik maken van opties zoals 'split', 'instr', 'instrrev' etc
      'hierover is genoeg te vinden in dit forum
        MsgBox sFileText
  Loop

  Close #iFileNo

End Sub

Function SelectFile() As String
    'opent je browse scherm om een textbestand te selecteren
    Dim Fdialog As FileDialog
    Set Fdialog = Application.FileDialog(msoFileDialogFilePicker)
    With Fdialog
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Textfiles", "*.txt"
        If .Show = -1 Then
            SelectFile = .SelectedItems(1)
        End If
    End With
    Set Fdialog = Nothing
End Function
 
Re:

Beste Maurice,

Dank voor je antwoord.
Ik ga het proberen.

PS. Het format van de txt is als volgt:
Alle info die in verschillende kolommen dient te komen is reeds gescheiden door een ";".
Het scheiden van de info kan door middel van de functie "tekst naar kolommen".

Stijn
 
Wellicht iets als onderstaand dat werkt?
Code:
Option Explicit

Sub test()
Dim sFileText As String
Dim iFileNo As Integer
Dim iRow As Integer
Dim iColumn As Integer
Dim splittedText() As String

On Error Resume Next
iRow = 2 'zo kun je regel 1 gebruiken voor kopjes
  iFileNo = FreeFile
      'open het bestand om te lezen
  Open SelectFile For Input As #iFileNo

      'lees het bestand regel voor regel door tot het eind
  Do While Not EOF(iFileNo)
    Input #iFileNo, sFileText
        'Schrijft de ingelezen regel naar een array, met ";" als delimiter
      splittedText = Split(sFileText, ";")
      'schrijft iedere waarde die in de array staat naar een nieuwe kolom
      For iColumn = LBound(splittedText) To UBound(splittedText)
          Sheet1.Cells(iRow, iColumn + 1) = splittedText(iColumn)
      Next iColumn
    iRow = iRow + 1
  Loop

  Close #iFileNo

End Sub

Function SelectFile() As String
    'opent je browse scherm om een textbestand te selecteren
    Dim Fdialog As FileDialog
    Set Fdialog = Application.FileDialog(msoFileDialogFilePicker)
    With Fdialog
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Textfiles", "*.txt"
        If .Show = -1 Then
            SelectFile = .SelectedItems(1)
        End If
    End With
    Set Fdialog = Nothing
End Function
 
Gelukt!

Code van vorige reactie heb ik niet aan de praat gekregen.
Uiteindelijk is het gelukt (met hulp van de leverancier) met het volgende stukje code:

Ps. Korte uitleg werking:
-de locatie van het txt-bestand staat gegeven in de map "instellingen"
-txt-bestand regel voor regel inlezen
-kolommen splitsen naar kolommen (met functie tekst naar kolommen. Als scheidingsteken gebruikt de macro een teken dat wordt ingegeven op het blad "instellingen".

Code:
' locatie txt-bestand:

filename = ActiveWorkbook.Name
txtbestand = Application.Workbooks(filename).Worksheets("Instellingen").Range("C2").Value
scheidingsteken = Application.Workbooks(filename).Worksheets("Instellingen").Range("C3").Value

Worksheets(1).Select
Cells.Select
Selection.ClearContents

Range("A1").Select

' inlezen txt-bestand regel voor regel:

Open txtbestand For Input As #1
Do While Not EOF(1)
    Line Input #1, textregel
    ActiveCell.Value = textregel
    ActiveCell.Offset(1, 0).Select
Loop
Close #1

' Verdelen in kolommen:
 
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:=scheidingsteken, _
    FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
    Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 4), Array(10, 4), Array(11, 4), _
    Array(12, 4), Array(13, 4), Array(14, 4), Array(15, 4), Array(16, 1), Array(17, 1), _
    Array(18, 1), Array(19, 1), Array(20, 1))


End Sub

Ik hoop dat iemand er wat aan heeft. Ik ben er in ieder geval mee geholpen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan