• 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.

Text-file in Excel met VBA

  • Onderwerp starter Onderwerp starter SELU
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

SELU

Gebruiker
Lid geworden
1 apr 2019
Berichten
6
Hey iedereen!

Ik zou graag een text-file met kwartuurwaardes willen inladen in Excel a.d.h.v. VBA. Ik heb al verschillende dingen geprobeerd maar aangezien er voor een heel jaar per kwartier meetwaarden zijn, schieten deze macro's snel te kort (o.a. record macro).

Graag zou ik de tekst file willen inladen op deze manier:
Application.GetOpenFilename()

Om vervolgens voor elke lijn tekst (verschillende lengtes) een nieuwe rij te voorzien. de

Het filteren, delimiter gebruiken en transponeren achteraf is op zich geen probleem, ik zou graag het inladen willen automatiseren.

Alvast bedankt!
Met vriendelijke groet,
Steve
 

Bijlagen

  • Knipsel.PNG
    Knipsel.PNG
    34,1 KB · Weergaven: 72
Laatst bewerkt:
Zonder een voorbeeld tekstbestand met uitleg over de verschillende velden wordt het lastig iets voor je te doen.
 
Zonder een voorbeeld tekstbestand met uitleg over de verschillende velden wordt het lastig iets voor je te doen.

Beste edmoor in de originele post is wel degelijk een afbeelding bijgevoegd mat een knipsel uit het tekstbestand. Als delimiter zou ik zowel een semicolon als spatie willen gebruiken. In deze afbeelding zie je het volgende:

datum (2x);referentienummer; ;Bnr;Bnr;Enr-Enr;KWT/KWR;Enr;meetwaarde1;...;meetwaarde96

er zijn 96 meetwaarden per lijn en 365 lijnen per jaar wanneer ik dit importeer via de methode van @jkpieterse werkt dit maar als ik van gebruik maak van record macro geeft deze aan dat het bestand te groot is. Momenteel wordt dit gedaan zoals jkpieterse het aan geeft maar dit is te traag en dit zou ik graag willen automatiseren zoals aangegeven in de originele post.
 
Een plaatje is geen tekstbestand.
 
In de bijlage heb ik een aangepaste tekstfile bijgevoegd.
 

Bijlagen

De delimiter in je voorbeeld bestand is een tab.
Probeer deze eens:
Code:
Sub Inlezen()
    Dim Regel As String
    Dim txt As Integer
    Dim bst As String
    Dim rgl() As String
    
    txt = FreeFile
    bst = "[COLOR="#FF0000"]D:\Helpmij\SELU\test.txt[/COLOR]"
    i = 1
    
    Open bst For Input As #txt
    Application.ScreenUpdating = False
    Do Until EOF(txt)
        Line Input #1, Regel
        rgl = Split(Regel, vbTab)
        Range("A" & i).Resize(, UBound(rgl)) = rgl
        i = i + 1
    Loop
    Close txt
    Application.ScreenUpdating = True
End Sub

Uiteraard het rode gedeelte even aanpassen.
 
Alvast bedankt voor je snelle reactie! Jammer genoeg krijg ik onderstaande foutmelding.
fout.PNG
 
Werkt hier prima.
Je gebruikt toch wel het tekstbestand dat je in #6 plaatste?
Plaats dan je Excel bestand.
 
Ja ik heb hetzelfde bestand gebruikt en ook het file-path aangepast maar ik blijf dezelfde foutmelding krijgen. Ik test het momenteel in een lege Excel sheet.
 
Hier gebruik ik ook een leeg Excel bestand en werkt het prima in.
Loop die code eens met F8 door om te kijken welke regel die fout veroorzaakt.
Met welke Office versie werk je?
 
Wanneer ik met F8 het programma doorloop, geeft deze een foutmelding na de lijn:

Range("A" & i).Resize(, UBound(rgl)) = rgl

Ik werk met office 2016 (64bit)
 
Dan heb ik zo geen idee waarom dat mis gaat.
Hij vult hier het Excel werkblad in een seconde met alle delen van het tekstbestand in een eigen cel.
Ik heb de 32-bit versie van Office 2016, maar ik kan me niet voorstellen dat dat er iets mee te maken heeft.
 
Volgens mij is VBA hier volstrekt niet nodig, zie bijlage en zie mijn eerdere bericht.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan