[VBA/Excel] Data scheiden zonder scheidingstekens

Pagina: 1
Acties:

  • KillerDream
  • Registratie: Februari 2002
  • Laatst online: 03-12-2025
Ik ben bezig in VBA in Excel versie 2002 (Office XP Proffesional).

Daarin ben ik een script aan het maken die data uit een "NAAM.txt" file haalt en deze in excel zet.

De data in "NAAM.txt" zit er als volgt uit:
code:
1
011001100010110110110011001101110011010101001101......

Dit is binare data zonder scheidingstekens, ofterwijl deze reeks van tekens wil ik scheiden in een vast patroon van 8 tekens aangezien dat weer 1 byte is waar ik de waarden uit kan halen.

Opzich is dit geen probeem. Het scheiden kan simpel via de volgende code:
code:
1
2
.TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat)
.TextFileFixedColumnWidths = Array(8, 8)



Het Probleem

De grootte van het "NAAM.txt" bestand is niet altijd hetzelfde en dus moet het aantal ',8 ' in de array aangepast worden.
En uiteraard ook ', xlTextFormat'.

Ik heb al gezocht of het ook zonder een array mogelijk is, maar op de MSDN site kan ik er niets over vinden.


Oplossing

1. De waardes in de array aanpassen, maar aan welke voorwaarden moet ik die dan koppelen?

2. Voordat Excel het bestand "NAAM.txt" inleest deze al voorzien van scheidingstekens.


Welke van deze 2 opties adviseren jullie mij? Of eventueel een andere :)
En in welke richting dan de oplossing moet zoeken.

  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 13-05 14:28

koli-man

Bartender!!!!

Ik weet niet wat je helemaal precies bedoeld met de grootte van het bestand..maar ik ga er van uit dat je het aantal karakters bedoeld.
Kun je niet de file lezen totdat je een '\n' of zo tegenkomt en dan met het aantal getelde karakters de grootte van je array maken bepalen.

[ Voor 6% gewijzigd door koli-man op 16-12-2003 17:16 . Reden: foutje in zinsverband ]

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • KillerDream
  • Registratie: Februari 2002
  • Laatst online: 03-12-2025
koli-man schreef op 16 december 2003 @ 16:59:
Ik weet niet wat je helemaal precies bedoeld met de grootte van het bestand..maar ik ga er van uit dat je het aantal karakters bedoeld.
Ja, correct.
Kun je niet de file lezen totdat je een '\n' of zo tegenkomt en dan met het aantal getelde karakters de grootte van je array maken bepalen.
Ja, dus eerst hat aantal tekens lezen, en aan de hand van die uitkomt het aantal ",8" maken.

Is een mogelijkheid denk ik, of het in VBA wil weet ik niet. Ik zal het ff bekijken :)

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Met de functie FileLen(<file>) kan je de grootte van een file uitlezen in bytes.

Voor een gewone Ascii file is elke karakter 1 byte, als je dan "12345678" erin hebt staan krijg je dus lengte 8 terug.
Als je binaire waardes erin staan zonder Enters en zo dan kan je dus simpelweg de uitkomst van FileLen() delen door 8 om de grootte van je array te bepalen.

Als er wel Enters in staan dan moet je even experimenteren om de juiste berekening te vinden, soms bestaat een Enter namelijk uit twee karakters vbCr en vbLf en soms 1.

  • KillerDream
  • Registratie: Februari 2002
  • Laatst online: 03-12-2025
Lister schreef op 16 december 2003 @ 20:45:
Met de functie FileLen(<file>) kan je de grootte van een file uitlezen in bytes.

Voor een gewone Ascii file is elke karakter 1 byte, als je dan "12345678" erin hebt staan krijg je dus lengte 8 terug.
Als je binaire waardes erin staan zonder Enters en zo dan kan je dus simpelweg de uitkomst van FileLen() delen door 8 om de grootte van je array te bepalen.
Bedankt voor je reactie! _/-\o_
Ik denk dat ik hiermee wel wat kan. :)