Hejsan på er Din ListView är väl onödig ! ? eller. Så här ungefär. Kan inte som du förstår provköra. Tack Sven, du är en klippa på VB, Skall ta och prova koden så hör jag av mig sedan. Men den ser ju onekligen bättre ut än vad jag åstadkomm. Jo då den funkade. Fick bara sätta dit .OpenFile "exelark.xls" så funkade det. Men jag har ett annat problem med den. Jag får overflow på a=a+1. Men det är bara när raderna är kortare än 68 tecken. Kan du visa en rad ur din txtfil där det strular. Konstigt du borde kunna få a att bli 255 Dim a As Byte var jag tvungen att ha de andra gick att ändra till Long. Dom är deklarerade i subrutinen. Men jag hittade ett annat problem. I texten som jag vill ha till exel så förekommer det kommatecken vilket gör att raden bryts vid dom så texten hamnar fel i exelarket. Det kan nog vara det som gör att jag får overflow på a=a+1. Alla meningar, ord och tal som ligger i textfilen är omringade med "" så jag satte en replace på det, och nu funkar det. Fast nu dök det upp andra bekymmer. Om man har tryckt på enterknappen för att bryta en rad när man skriver så ligger det en massa konstiga tecken av det i listviewen och nu verkar det som om det också ställer till problem. Då heter felkoden Subscript out of range. Jag tror jag snart skippar det här med exel. bara bekymmer. <b>Subscript out of range</b> Nu kan du väl berätta vad det är du vill göra. Ja faktiskt, hur visste du det?:-) När jag kommit så här långt så vore det ju lite tragiskt att bara lägga av. Kollade lite hemsidor om ASCII-koder. Det finns ju både enter och linefeed, det är ju det som jag tryckt för att byta raden i texten. Hittar inget tecken som motsvarar det som visas i listviewen där jag har radbrytning, ser ut som 2 st | , Fast lite tjockare och inte så höga. Det finns ett tecken (254) fast det är för dos, det liknar det som jag har. Annars får man väl lägga det på is sålänge :-(Får inte till loopen mellan vb och exel
Jag försöker att få till en loop som konverterar en kommasepparerad textfil till exel utan framgång.
så här ser koden ut som generarar exelkoden, funkar på en rad men när jag försöker mig på att loopa genom textfilen så händer inget alls. tänkte att jag sedan jag har listan i en listview så borde det inte vara så knivigt att få till loopen så att exelarket fylls i, men jag ger snart upp. hoppas ni kunniga har en lösning här på sidan.
<code>Dim colu As Byte
Dim rw As Byte, a As Byte
Dim ef1 As New ExcelFile
With ef1
a = a + 1
.EWriteString a, 1, strnamn
.EWriteString a, 2, strbeskrivning
.EWriteString a, 3, strpris
.EWriteString a, 4, strantal
.EWriteString a, 5, strean
.CloseFile
End With
</code>
när jag öppnar textfilen så ser det ut som följer
<code>cd.CancelError = True 'öppnar för input
cd.DialogTitle = "Öppna databas"
cd.Filter = "Gilltiga format *.ini |*.ini|(*.*)|*.*|"
cd.ShowOpen
F = FreeFile
Open (cd.FileName) For Input As F
Do While Not EOF(F)
Input #F, strNamn, strPris, strantal, strbeskrivning, strean
Set itmx = ListView1.ListItems.add()
itmx.Text = strNamn
itmx.SubItems(1) = strPris
itmx.SubItems(2) = strantal
itmx.SubItems(3) = strbeskrivning
itmx.SubItems(4) = strean
Loop
Close F</code>Sv: Får inte till loopen mellan vb och exel
Återkommer med ett förslag utan ListViewSv:Får inte till loopen mellan vb och exel
<code>
Dim colu As Byte
Dim rw As Byte, a As Byte
Dim ef1 As New ExcelFile
Dim convStr() As String, lineStr As String
cd.CancelError = True 'öppnar för input
cd.DialogTitle = "Öppna databas"
cd.Filter = "Gilltiga format *.ini |*.ini|(*.*)|*.*|"
cd.ShowOpen
F = FreeFile
a = 1
Open (cd.FileName) For Input As #F
Do Until EOF(F)
Line Input #F, lineStr
convStr = Split(lineStr, ",")
With ef1
.EWriteString a, 1, convStr(0)
.EWriteString a, 2, convStr(1)
.EWriteString a, 3, convStr(2)
.EWriteString a, 4, convStr(3)
.EWriteString a, 5, convStr(4)
End With
a = a + 1
Loop
' Felet innan skulle kunna vara att du gör ef1.CloseFile efter en inmatning
ef1.CloseFile
Close #F
</code>Sv: Får inte till loopen mellan vb och exel
//JockeSv:Får inte till loopen mellan vb och exel
Jag har lagt in en radbrytning efter 68 tecken så jag tror det är vbcrlf som spökar. Har lagt in en replace på den utan framgång, eller kan man göra någon annan finurlig grej som jag inte vet om?.
//JockeSv: Får inte till loopen mellan vb och exel
Finns det en massa tom rader mm.
Dim colu As Byte
Dim rw As Byte, a As Byte
Är dessa variabler deklarerade i en SubRutin eller är dom Globala ?
När man hanterar heltal i VB6 så är det ingen mening med att använda Byte eller Integer
Använd Long som är ett 32 bitars tal.Processorn skyfflar 32 bitar i taget.Om du då vill ha Byte
måste programmet vaska fram Byten ur dom 32 bitarna.Helt onödiga operationer.
Ändra till
<code>
Dim colu As Long
Dim rw As Long, a As Long
'Och lägg till efter Loop Om ! a är Globalt ! ummm som den inte bör vara
a = 1
</code>Sv:Får inte till loopen mellan vb och exel
Sv: Får inte till loopen mellan vb och exel
Jaaa då har arrayen convStr() överskridits dvs det saknas deklarerade fack att lägga ordet i.
Ju mer man rotar i en skit ju mer luktar det ;-)Sv:Får inte till loopen mellan vb och exel
Börjar misstänka att du letar på Byte nivå. Dvs kollar olika tecken 0-255
Nyfiken SvenSv: Får inte till loopen mellan vb och exel
/jocke