Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
Det er fordi Result er et reserveret ord - det må du ikke bruge som variabelnavn :o)
Men det ser ud til at rynke kom mig i forkøbet, men jeg har dog lidt at supplere med. Du læser linierne ind i en variabel der hedder result, og skriver derefter result til filen. Så er spørgsmålet, hvad du egentligt bruger result1 til? Det er en fejl i din kode, du skal bruge din variabel result1 i stedet for result. Og brug så svaret fra rynke10
Altså: Erstat alle(!!!) result med result1, og brug derefter rynke10's svar ;o)
PS: Når du poster en masse kode og beder om hjælp til at finde fejlen, gør du alle en kæmpe tjeneste ved at sige HVOR fejlen ligger. Lidt som at parkere bilen hos en mekaniker og sige, at der er en fejl der skal laves på bilen, men du siger ikke hvad - det er op til mekanikeren at finde ud af :o(
PPS: Det du kalder VB-delen til excel er VBA - Visual Basic for Applications, som er macrosproget for hele officepakken... :o)
Jeg har gjort præcist det samme, taget din kode, skiftet result med result1, og brugt svaret fra rynke10. Og det virker perfekt:
Dim readfil, writefil, result1 As String readfil = "c:\test\test.txt" writefil = "c:\test\test.csv" MsgBox ("Du læser fra denne fil: " & readfil), vbOKOnly Open readfil For Input As #1 Open writefil For Output As #2 Do While Not EOF(1) = True Line Input #1, result1 If result1 Like "--------*" Then Line Input #1, result1 result1 = Replace(result1, " ", ",") Print #2, result1 End If Loop Close #2 Close #1
PS: der var en lille fejl i rynkes svar - der manglede også at blive erstattet et result med et result 1. Når du har skiftet ALLE result, så der ingen steder i din kode overhovedet står result, så virker det. Kopier min kode ovenfor - den virker som sagt :o)
Dim readfil, writefil, result1 As String readfil = "c:\Daily Report d." & Date & ".txt" writefil = "c:\Daily Report d." & Date & ".csv" MsgBox ("Du læser fra denne fil: " & readfil), vbOKOnly Open readfil For Input As #1 Open writefil For Output As #2 Do While Not EOF(1) = True Line Input #1, result1 If result1 Like "--------*" Then Line Input #1, result1 result1 = Replace(result1, " ", ",") Print #2, result1 End If Loop Close #2 Close #1 End Sub
Lyder mystisk - jeg får ingen fejl what-so-ever. Men det er jo en god øvelse i lidt debugging. Kan VB genkende replace - hvis du skriver det med lille "r", skifter den så selv til stort? Har du en oldnordisk version af Excel (og dermed VBA - jeg kører VBA 6.0)? Og har du kopieret koden direkte - ikke ændret noget som helst (pånær stien til filen)?
Det eneste der kan give mening for mig er at du har en version af VBA der ikke understøtter Replace (lydermystisk) eller du har kommet til at ændre lidt på koden?
Hvis jeg skriver replace med lille r, og går hen i slutningen af linien og trykker Enter, så retter den det selv til stort, så den kan godt genkende commandoen. Jeg bruger den VBA der ligger i Excel 97, så det er en lidt gammel version. Jeg har pt. ikke nogen mulighed for en nyere version, desværre.
Eftersom den godt kender Replace-funktionen, vil jeg påstå, at koden er fejlfri. Den påstand er bare lidt dum, da du får en fejl. Hvis du har mulighed for at sende mig arket (bare det lille test-ark du har), så kan jeg se om jeg kan finde andre ting der gør, at det ikke virker. Måske har du gjort ete eller andet, der ikke har noget med macroen at gøre, men som alligevel bevirker at du får fejlen. Send til martin_moth@yahoo.com
Når jeg går ind i Hjælp/Om Microsoft Visual Basic, så får jeg ikke noget versions-nummer. Der står bare Microsoft Visual Basic og så noget med Copyright osv. fra 1987-1997.
Og jeg kan sagtens få hjælp frem til Replace-funktionen, men der er ikke noget der har kunnet hjælpe mig.
Jeg fatter ikke hvad der galt - det burde virke, og det virker hos mig.
Jeg kan tilbyde dig at lave en lille exe-fil (i VB, ikke VBA), hvor du kan vælge din txt-fil og in csv-fil, samt indtaste hvad der skal replaces med hvad...
Alternativt kan du skodde Replace-funktionen, og selv lave en replacefunktion vha. instr(), mid() osv...
Det er meget pænt af dig, men jeg vil helst gerne have koden, da det skal være en del af et større projekt. Nu er jeg ikke så meget inde i de forskellige commandoer i VB, men jeg vil prøve at kigge lidt på de to du skriver der. Jeg lader lige spørgsmålet stå åbent lidt endnu, men hvis der ikke kommer andre svar og jeg kan få det til at virke med de commandoer du skriver dér, så får du point'ne. ;)
Det er bare tåbeligt, at du bliver nødt til at lave din egen replace-funktion. Jeg fatter som sagt ikke hvad der går galt, har mistanke om at du kører med en for gammel funktion, men hvorfor er Replace så beskrevet i hjælpen...
Mid(), InStr(), Len(), Left() og Right() kan altid kombineres på passende vis så du kan opnå alle de strengemanipulationer du ønsker. Det er blot et spørgsmål om kreativitet ;o)
Måden du kan gøre det på er at læse hver linie karakter for karakter, tjekke karakteren og så handle ud fra hvilken karakter du har...
Jeg fandt ud af, at det faktisk var bedre at bruge mid()-funktionen i mit tilfælde, så nu virker det simpelthen bare som det skal. ;) Mange tak for hjælpen, undskyld jeg først giver point nu.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.