Inlezen data uit txt bestand in Excel via VBA

Status
Niet open voor verdere reacties.

jjust

Gebruiker
Lid geworden
29 dec 2006
Berichten
20
Dames en heren,

Ik zit met het volgende probleem. Ik heb specifieke gegevens nodig uit een text bestand. Deze gegeven staan in de 0,00% format. Echter als het percentage lager is dan 1% dus bv 0,19% dan staat er in de tekstfile ,19%. Als ik dit inlees in Excel via onderstaande code slaat excel dit op als text en niet als nummer. Als het getal groter of gelijk is aan 1%dan gaat het wel goed. Ik heb al verschillende dingen geprobeerd maar het blijft als text binnen komen. Hebben jullie een idee hoe dit netjes op te lossen.

Korte toelichting op de code. Er staat een nummer in de excelfile. Dit nummer moet worden opgezocht in de txt file. In de eerste regel onder dit nummer waarin het woord "TOTAL" staat moet de inhoud van de tiende kolom maar rechts worden opgezocht en in de kolom naast het nummer in de excelfile worden geplaatst. Ik hoor graag van jullie.

Code:
Set Data = ActiveWorkbook

Workbooks.OpenText Filename:="C:\test\test.txt", Origin:=437, StartRow:=1, _
        DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(6, 1), Array(23, 1), _
        Array(46, 1), Array(63, 1), Array(74, 1), Array(88, 1), Array(103, 1), Array(121, 1), Array _
        (148, 1), Array(168, 1), Array(177, 1), Array(187, 1)), TrailingMinusNumbers:=True
        
   Set vb = ActiveWorkbook

   Data.Activate
        

   For Each x In Sheets("Data").Range("A2", "A11")
   
   vb.Activate
   
 Cells.Find(What:=x.Value, after:=ActiveCell, LookIn:=xlFormulas, LookAt _
         :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False).Activate
    Cells.Find(What:="TOTAL", after:=ActiveCell, LookIn:=xlFormulas, LookAt _
           :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False).Activate
    gegeven = ActiveCell.Offset(0, 10).Value
      Data.Activate
    x.Offset(0, 1).Value = gegeven
    
    Next x
   
        Sheets("Data").Activate

    Range("B2:B11").Select
    Selection.NumberFormat = "0,00%"
 
In welk veld staat de percentages ?
Is het echt geen gescheiden velden bestand ?
 
Nee het is echt geen gescheiden velden bestand. De txt files zijn outputfiles uit een database van een externe partij. Deze velden zijn niet gescheiden door wat dan ook. Je moet ze echt inlezen op basis van het aantal karakters. In het voorbeeld is de nu 10de kolom gevuld met percentages.

Ik heb handmatig de txt file geopend en de kolommen aangeven met fixed with. Dan leest excel de percentages wel goed in. Dit proces heb ik opgenomen met de macro recorder. Het inlezen heb ik herhaald door de macro te "runnen". Als dit via de macro gaat leest hij het niet goed in :shocked: Dit terwijl tijdens het opnemen het wel goed ging.
 
Via een omweg is het opgelost niet erg netjes maar ja.
Oplossing. Ik lees nu het getal in zonder het % teken (door de kolom smaller te maken). Nu geeft excel nog steeds text ivp een nummer. Dit is opgelost met de functie CDec die maakt er namelijk een decimaal van. Deze uitkomst deel ik door 100 en zet de opmaak in excel op percentage. Dit lost het probleem op. Zie onderstaande code icm de code die eerder gepost is.

Code:
x.Offset(0, 1).Value = CDec(gegeven) / 100

De reden dat ik het % teken weg moet laten is omdat anders de CDec functie niet werkt. Voor zover ik weet is er geen vergelijkbare functie welke wel meteen met het percentage kan werken.

Mocht iemand nog een betere oplossing weten hoor ik het uiteraard graag.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan