Waarden Textboxen naar komma gescheiden text file

Status
Niet open voor verdere reacties.

gbvdh

Gebruiker
Lid geworden
14 feb 2007
Berichten
111
Goedendag,

Ik heb deze vraag ook al op het Excel forum geplaatst, maar daar heb ik nog geen reacties gehad dus vandaar hier ook maar even.
Ik wil graag de waarden uit een aantal textboxen wegschrijven naar een komma gescheiden text bestand, daarvoor gebruik ik nu
Code:
 'Open browse window om bestand te selecteren
NewFN = Application.GetSaveAsFilename("C:\Documents and Settings\Test", "Text File (*.txt), *.txt")

sFile = NewFN

If NewFN = False Then
    Exit Sub
Else
    Dim cCont As Control
    Dim vaFields As Variant

    'set and open file for output
    FNum = FreeFile()
    Open NewFN For Append As FNum
            
    Print #FNum, dDate; ","; TextBox1.Value
    Close #FNum
    
End If
Ik heb echter het gevoel dat deze manier van “comma separated” een beetje amateuristisch is. Daarnaast werkt dit prima bij 1 textbox maar eigenlijk heb er meer, is er dus een manier om dit op een “nettere” komma gescheiden te maken en om een loop toe te voegen waardoor al de textboxen automatisch af worden gelopen?

Bij voorbaat dank,
Barry
 
Dag Barry,

Ja, er is een elegantere oplossing met Join en Split

Je stopt je variabelen in een array:

Dim a(2)
a(0) = "eerste"
a(1) = "tweede"
a(2) = "derde"
MsgBox Join(a(), ",")

Print #k,Join(a(),",")

a()=split(Input x,#k, ",")

Gegroet,

Axel
 
Dat begint er inderdaad al aardig op te lijken, bedankt daarvoor.
Is er welicht ook manier om m.b.v. een loop al de textboxen zelfstandig af te lopen, deze methode zou nl betekenen dat ik alles met de hand in moet voeren en ik heb er nogal wat.

Bij voorbaat dank,
Barry
 
Dag Barry,

Uiteraard kan dat, daar zijn ze voor (For Next en Do Loop).

Gegroet,

Axel.
 
Dat dacht ik ook, maar ik kom er toch niet helemaal uit, als ik dit gebruik:
Code:
Dim cCont As Control
FNum = FreeFile()

Open NewFN For Append As FNum

    For Each cCont In Me.Controls
        If TypeName(cCont) = "TextBox" Then
           Print #FNum, cCont; ","
        End If
    Next cCont
            
Close #FNum

End If
krijg ik inderdaad de waarden val al de textboxen netjes in m'n text bestand ook nog komma gescheiden (welliswaar op een andere manier dan mij hier werd aangeraden maar op die manier kom ik er niet uit met een loopje, ik ben pas net begonnen met programmeren vandaar). Maar het probleem is dat de waarden niet achter elkaar maar onder elkaar worden weggeschreven. Heeft iemand hier misschien een oplossing voor?

Barry
 
Zo?

Code:
Dim cCont As Control
FNum = FreeFile()

Open NewFN For Append As FNum

    For Each cCont In Me.Controls
        If TypeName(cCont) = "TextBox" Then
           Print #FNum, cCont; vbNewLine
        End If
    Next cCont
            
Close #FNum

End If

ongeteste code

Wigi
 
Met "vbNewLine" wordt neeem ik aan juist een nieuwe regel gemaakt, misschien was ik in mijn vraag niet helemaal duidelijk, maar dit is eigenlijk precies wat ik niet wil. Ik wil graag dat al de waarden achter elkaar worden weggeschreven, dus: 1,2,3,4 en niet
1,
2,
3,
4,
 
Zo dan?

Code:
Dim cCont As Control, str As String
FNum = FreeFile()

For Each cCont In Me.Controls
    If TypeName(cCont) = "TextBox" Then str = str & cCont.Text & ","
Next cCont

Open NewFN For Append As FNum
    Print #FNum, Left(str, Len(str) - 1)
Close #FNum

End If

Wigi
 
Dat is inderdaad precies wat ik bedoelde.
Vriendelijk bedankt
 
Ik zat niet helemaal op te letten denk ik, ik zie een antwoord van Wigi staan en denk dan meteen dat ik in het Excel forum zit...
Ik dacht dat het al helemaal op gelost was, maar helaas is dit niet helemaal het geval. Ik dacht namelijk dat ik op deze manier
Code:
For xx = 1 To 26
    TextBoxxx = xa
    str = str & xa & ","
Next xx

Open NewFN For Append As FNum
    Print #FNum, Left(str, Len(str) - 1)
Close #FNum
wel kon selecteren dat ik alleen textbox1 t/m 26 in het textbestand wil hebben ipv al de aanwezige textboxen. Maar dat werkt niet want op deze manier krijg ik alleen maar komma's. Is er een manier om ervoor te zorgen dat ik txtbox1 t/m 26 weg kan schrijven en de rest niet?
 
Code:
str = ""
For xx = 1 To 26
    str = str & Controls(TextBox & xx).Text & ","
Next xx

Open NewFN For Append As FNum
    Print #FNum, Left(str, Len(str) - 1)
Close #FNum

Wigi
 
Dat werkt helaas niet.
Ik krijg hierbij een fout (kan opgegeven object niet vinden) in str = str & Controls(TextBox & xx).Text & ","
Er wordt aangegeven dat TextBox leeg is en xx=1, dat lijkt me op zich wel te kloppen (Toch?)
 
Laatst bewerkt:
Sorry

Code:
str = str & Controls("TextBox" & xx).Text & ","

" " vergeten.
 
Dat was het inderdaad. Volgens mij is nu wel alles beantwoord.
Bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan