17. februar 2006 - 22:45Der er
6 kommentarer og 1 løsning
Oprettelse af ascii filer ved hjælp af variabel i program
Hej Eksperter...
Så er den gal igen ;-)
Jeg skal ha min makro til at oprette en fil afhængigt af indholdet i en linie.
Det vil sige at den nedenstående tekst bliver delt op i 3 filer 050106 050106 050106 060106 060106 060106 070106 070106 070106 .....
Altså en fil for 050106, 060106 og 070106.
Jeg har ikke helt fundet ud af måden det skal gøres på endnu, men har da fundet ud af hvordan man opretter en fil og skriver til den, men det med at lave en lykke og få det til at virke på en snedig måde har jeg ikke fundet ud af endnu.
Har 2 idér, den ene er med at åbne og lukke tekstfilen for hver linie. Den anden er at den tager og sammenligner med resultatet.
Er der nogle der har et godt bud på en løsning??
Jeg skriver til filen på følgende måde
Sub SkrivTilStamdata() Open "c:\test\stamdata.dat" For Output As #1 antal = Sheets("Data").Range("b13") - 1 Print #1, For i = 1 To antal linie = "0000" & Sheets("ark2").Range("a" & i) linie = linie & ",00000" & Sheets("ark2").Range("d" & i) Print #1, linie Next i Close #1 End Sub
Hvis posterne er i nummerorden, kan du jo skrive til én fil ad gangen, men det kan sagtens gøres selv om de står blandet mellem hinanden.
Du åbner bare 3 filer samtidig og sætter et kriterie på de to første tegn i din variabel, kriteriet bestemmer hvilken af de 3 filer, der skrives til.
Open "c:\test\stamdata1.dat" For Output As #1 Open "c:\test\stamdata2.dat" For Output As #2 Open "c:\test\stamdata3.dat" For Output As #3 antal = Sheets("Data").Range("b13") - 1 Print #1, For i = 1 To antal linie = "0000" & Sheets("ark2").Range("a" & i) linie = linie & ",00000" & Sheets("ark2").Range("d" & i)
if left(dinvar,2) = "05" then print #1, linie 'dinvar er din variabel if left(dinvar,2) = "06" then print #2, linie if left(dinvar,2) = "07" then print #3, linie
Hvor har du datoerne stående ? Hvor har du de værdier der skal gemmes ? Skal der tilføjes i filen, eller skal der kun nye i ? Skal den kun have datoen som filnavn, eller skal den hedde 070106stamdata.dat ? Hvorfor en tom linie først ?
Sub SkrivTilStamdata() Dim FNo As Long Dim temp As Variant Dim antal As Long Dim linie As String Dim i As Long antal = Sheets("Data").Range("b13") - 1 temp = Sheets("ark2").Range("a1") FNo = FreeFile Open "c:\test\" & CStr(temp) & ".dat" For Output As #FNo Print #FNo, For i = 1 To antal If Sheets("ark2").Range("a" & i) <> temp Then Print #FNo, Close #FNo FNo = FreeFile temp = Sheets("ark2").Range("a" & i) Open "c:\test\" & CStr(temp) & ".dat" For Output As #1 Print #FNo, End If
linie = "0000" & Sheets("ark2").Range("a" & i) linie = linie & ",00000" & Sheets("ark2").Range("d" & i) Print #FNo, linie Next i Close #FNo End Sub
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.