Avatar billede michaelrar Seniormester
06. august 2004 - 15:06 Der er 7 kommentarer og
2 løsninger

Slette linie i et andet tekst dokument

Jeg har et Word dokument som via lidt VBA code henter første linie i en anden txt-fil og indsætter den ved et bogmærke.
Nu vil jeg gerne have slettet den linie jeg henter i txt-filen. Hvordan gør jeg det ?
Avatar billede martin_moth Mester
09. august 2004 - 09:00 #1
Læs hele filen ind i et array, en linie pr. post i arrayet

Overskriv filen med dit array, skriv en post i arrayet i hver linie, og spring den post over, der svarer til den linie du ikke vil have med


Meget impelt uden array: Slet linie 2 i en fil med 3 linier:

Læs linier:

  Filnummer = FreeFile
  Open "C:\Fil.txt" For Input As #Filnummer
  Line Input #Filnummer, MinString1 'Putter 1. linie ind i MinString1
  Line Input #Filnummer, MinString2 'Putter 2. linie ind i MinString2
  Line Input #Filnummer, MinString3 'Putter 3. linie ind i MinString3
  Close #Filnummer

Skriv linier:
  Filnummer = FreeFile
  Open "C:\Fil.txt" For Output As #Filnummer
  Print #Filnummer, Minstring1 'Skriver indholdet af MinString1 til linie 1
  Print #Filnummer, MinString3 'Skriver indholdet af MinString3 til linie 2
  Close #Filnummer

I stedet for MinString1 MinString2 MinString3 bruger du bare et array, det er nok lettere

:o)
Avatar billede michaelrar Seniormester
09. august 2004 - 09:07 #2
Når nu jeg har 1000 linier i mit tekstdokument, er metoden med et array så bedre ?
og hvordan skal det så se ud ?
Avatar billede martin_moth Mester
09. august 2004 - 09:22 #3
Det spørgsmål kender du vist selv svaret på - naturligvis skal du ikek oprette 1000 variabler...

Du laver et dynamsik array
Avatar billede michaelrar Seniormester
09. august 2004 - 09:24 #4
Kan du hjælpe med hvordan den kode skal se ud.
Har lavet meget ( til husbehov ) i vb/vba, men aldrig arbejdet med array.
Avatar billede martin_moth Mester
09. august 2004 - 09:27 #5
Dim strArray() as string
Dim Filnummer as Long
Dim i as long


'Læs:

Filnummer = FreeFile
Open "C:\Fil.txt" For Input As #Filnummer
While not eof (Filnummer)
  redim preserve strArray(i)
  Line Input #Filnummer, strArray(i)
  i = i+1
Loop
Close #Filnummer


'Skriv pånær fx. linie 726

Filnummer = FreeFile
Open "C:\Fil.txt" For Output As #Filnummer
For i = lbound(strarray) to Ubound(strarray)
  if i = 725 then i = i+1 '(springer linie 726 over)
  Print #Filnummer, strarray(i)
Next i
Close #Filnummer
Avatar billede martin_moth Mester
09. august 2004 - 09:28 #6
Hmmm - kan du SÅ komme i gang med at arbejde med arrays - det kan du ikke leve uden ;o)
Avatar billede martin_moth Mester
09. august 2004 - 09:30 #7
Måske skal dit loop gå til Ubound(strarray) -1, for den sidste post vil altid være tom, sådan som jeg har kodet det herover. Ikke at det betyder noget, du får bare en blank linie i bunden af din textfil. Men det kan jo gøres på 117 andre måder.
Avatar billede michaelrar Seniormester
09. august 2004 - 09:49 #8
Tusind tak for hjælpen, det var bare perfekt.

Skal nok tage mig sammen og arbejde mere med array :-)
Avatar billede martin_moth Mester
09. august 2004 - 10:49 #9
Ovenstående er et dynamisk array, der skifter størrelse hele tiden

Mere normalt er måske et statisk array:

Dim StatiskArray(4) as string

Det har i ovenstående 4 pladser, fra index 0-3. Du kan ikek ændrer størrelsen på et statisk array
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester