Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

ASCII-file maken van excelsheet

Paulus
3 antwoorden
  • Het is misschien een beetje een rare vraag maar ik het het volgende:

    Ik heb een excel-sheet met daarin 2 kolommen 1 met tekst en 1 met cijfers.
    Nu is het de bedoeling om van deze excelsheet een ascii-file te maken die aan een vast bepaalde opmaakkenmerken voldoet bv positie 1-20=bijv gegevens kolom x; positie 21-50= kolom y; …..

    Kan dit op een of andere manier geprogrammeerd worden via een macro of maak ik het dan te ingewikkeld?
  • Ik geloof niet dat je in Excel een kolom kan dimensioneren (vast aantal tekens) en vervolgens op vaste breedte kan exporteren, dus dan ben je denk ik sowieso op een macro aangewezen.

    Je kan in VBA een textfile outputten met
    [code:1:f0f9d34a38]
    Open "C:\test.txt" For Output As #1
    Print #1, "tekstregel"
    Print #1, "tekstregel"
    Close #1
    [/code:1:f0f9d34a38]
    Om een kolom op een vaste breedte te zetten (van voorloopspaties voorzien) kun je een While-loop combineren met de functie Len():
    [code:1:f0f9d34a38]
    var1 = Cells(1, 1) ' waarde van A1 in variabele zetten
    Do While Len(var1) < 20
    var1 = " " & var1
    Loop
    var = Cells(1, 2) ' waarde van B1 in variabele zetten
    Do While Len(var2) < 30
    var2 = " " & var2
    Loop
    Print #1, var1 & var2
    [/code:1:f0f9d34a38]
    Dan is denk ik ook wel duidelijk hoe je volgspaties bij een tekstkolom moet doen. Je bepaalt of een waarde numeriek is met de functie IsNumeric:
    If IsNumeric(var1) Then
    ' routine om voorloopspaties te zetten
    Else
    ' routine om volgspaties te zetten
    End If
  • Heeft VBA geen Space() of String() functie? In dat geval kan je namelijk ook op volgende wijze padden met een spatie.
    [code:1:0140d00f3a]
    ' lengte 20
    paddedvalue = Right(Space(20) & cellvalue, 20)
    [/code:1:0140d00f3a]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.