Hejsan Det ser enkelt ut eftersom du har (; tecknet) som separator, då kan du använd Split När du sedan har ändrat texterna i arrayen så kan du slå ihop dem till en sträng igen med Join. Implementationen blir då ytterst enkel. Med denna lösning bör du naturligtvis läsa in filen rad för rad. RegExp är nog passande: Tackar för era svar. Uppskattas otroligt mycket. Ska se om jag kan få till det. Återkommer med beröm när jag fått det att fungera. Hej igen. Det ser bra ut. Den gode Andreas glömde att skriva för att få Regular Expression att fungera Join-funktionen låter en ange vilken "delimiter" man ska använda. Så man kan skriva så här: >outStr = Join(tmpArray, ";") Hejsan Med RegExp skall det se ut något sånjt här: >Som Sven säger så måste du lägga in en referens till biblioteket RegExp objektet ligger i. Byta ut och lägga till tecken i textfil ?
Här kommer en fråga som jag har funderat över ett tag.
Om man har en textfil som består av ett antal rader som kan se ut ungefär så här:
XXX;XXXXXX;XXXXXXXXXXXXX;XXX;XXXX;
Om man vill lägga till och byta ut tecken så att filen får detta utseende:
NR1;xxx;NR2;XXXXXX;NR3;XXXXXXXXXXXXX;NR4;XXX;NR5;XXXX;SLUT
Hur gör man?
Har suttit och tittat på Find och Replace men inte riktigt kunnat förstå hur man ska kunna åstadkomma detta. Finns det andra än dessa man bör använda? Ska man läsa in filen tecken för tecken eller går det att läsa in rad för rad?
Tacksam för svar
JesseSv: Byta ut och lägga till tecken i textfil ?
Dim tmpArray() As String
tmpArray = Split(strIn,";")
Nu har du de olika texterna i olika fack på tmpArray som du kan trolla med och skicka vidare.Sv: Byta ut och lägga till tecken i textfil ?
Sv: Byta ut och lägga till tecken i textfil ?
<code>
Function AddData(Value, nr1, nr2, nr3, nr4, nr5)
Dim RegExp As RegExp
Set RegExp = New RegExp
RegExp.Global = False
RegExp.Pattern = "(.*);(.*);(.*);(.*);(.*);"
AddData = RegExp.Replace(Value, nr1 & ";$1;" & nr2 & ";$2;" & nr3 & ";$3;" & nr4 & ";$4;" & nr5 & ";$5;SLUT ")
End Function
</code>
Eller:
<code>
Function FormatData(Value)
Dim RegExp As RegExp
Set RegExp = New RegExp
RegExp.Global = False
RegExp.Pattern = "(.*);(.*);(.*);(.*);(.*);"
FormatData = RegExp.Replace(Value, "NR1;$1;NR2;$2;NR3;$3;NR4;$4;NR5;$5;SLUT ")
End Function
</code>
Dett framkommer inte om NR1, NR2, osv är data eller ettiketter.Sv: Byta ut och lägga till tecken i textfil ?
JesseSv: Byta ut och lägga till tecken i textfil ?
Försökte få RegExp att fungera men förstod inte hur det skulle gå till.
Det blev så här till slut.
<Code>
nFile3 = FreeFile
Open ActiveWorkbook.Path & "\" & sFilename For Input As #nFile3
nFile4 = FreeFile
Open ActiveWorkbook.Path & "\" & "Nyfil.txt" For Output As #nFile4
Do Until EOF(nFile3)
Line Input #nFile3, strIn
tmpArray = Split(strIn, ";")
sTmp = ("H1;" + tmpArray(0) & ";H2;" & tmpArray(1) & ";H3;" & tmpArray(2) & ";H4;" & tmpArray(3) & ";H5;" & tmpArray(4) & ";H6;" & tmpArray(5) & ";H7;" & tmpArray(6) & ";CR")
Print #nFile4, sTmp
Loop
Close #nFile3
Close #nFile4
Kill ActiveWorkbook.Path & "\" & sFilename
Name ActiveWorkbook.Path & "\" & "Nyfil.txt" As ActiveWorkbook.Path & "\" & sFilename
End Sub
</Code>
Det fungerar åtminstone. Ska försöka med lite bättre kod senare.
Tackar för all hjälp
JesseSv: Byta ut och lägga till tecken i textfil ?
måste du sätta Reference till Microsoft VbScript Regular Expression 5.5
För att vara lite proffsig kan du använd Join när du möblerat om i tmpArray.
Då får du en string som innehåller alla orden med ett (space) mellan orden. Gör Replace(strIn," ",";")
Så här skulle du kunna skriva innan du kör Out
outStr = Replace(Join(tmpArray)," ",";")Sv: Byta ut och lägga till tecken i textfil ?
<CODE>
outStr = Join(tmpArray, ";")
</CODE>
/PelleSv: Byta ut och lägga till tecken i textfil ?
Ahaaaaaa så smart , har aldrig användt Join Tack
>tmpArray(6) & ";CR") det här blir jag lite fundersam på.
Varför lägger du till CR menar du vbCrLf ?Sv: Byta ut och lägga till tecken i textfil ?
Tänkte köra denna fil mot stordatormiljön. Där använder företaget "CR" som radavslut.
Skumt men sant.
Det fungerar bra med Join, klockrent med andra ord.
Tack för all hjälp jag har fått.
Måste tillägga att detta är det bästa forumet jag sett. Många trevliga och hjälpsamma människor.
Tack igen
JesseSv: Byta ut och lägga till tecken i textfil ?
<code>
Dim strIn as String
Dim strOut as String
Dim nFile3 as Long
Dim nFile4 as Long
Dim RegExp As RegExp
Set RegExp = New RegExp
RegExp.Global = False
RegExp.Pattern = "(.*);(.*);(.*);(.*);(.*);(.*);(.*)"
nFile3 = FreeFile()
Open ActiveWorkbook.Path & "\" & sFilename For Input As #nFile3
nFile4 = FreeFile()
Open ActiveWorkbook.Path & "\" & "Nyfil.txt" For Output As #nFile4
Do Until EOF(nFile3)
Line Input #nFile3, strIn
strOut = RegExp.Replace(strIn, "H1;$1;H2;$2;H3;$3;H4;$4;H5;$5;H6;$6;H7;$7;CR")
Print #nFile4, sTmp
Loop
Close #nFile3
Close #nFile4
Kill ActiveWorkbook.Path & "\" & sFilename
Name ActiveWorkbook.Path & "\" & "Nyfil.txt" As ActiveWorkbook.Path & "\" & sFilename
End Sub
</code>
Som Sven säger så måste du lägga in en referens till biblioteket RegExp objektet ligger i.Sv: Byta ut och lägga till tecken i textfil ?
Och !!! du måste bifoga detta bibliotek om du vill köra på en främmande dator !