Avatar billede spejder_leon Nybegynder
19. maj 2002 - 23:30 Der er 3 kommentarer og
2 løsninger

Ændring i mange filer på en gang

Hey -Jeg ville gerne indsætte de samme par linier i mange filer, der er i samme bibliotek på en gang.

Det er html filer altså alm tekst.

Hvordan for jeg VB til at åbne disse filer, søge efter et bestemt sted (eks </html>) og ændre det til noget andet.

Jeg skal indsætte en linie så der til sidst i alle mine html filer på en site vises et billede. det er et billede arkiv så der er hen ved 2000 html filer.

Jeg har ide om at give en path til biblioteket og give kriteriet *.htm og så skulle vb åbne filerne en efter en og ændre en linie til noget jeg gav i et text-felt.
Avatar billede joern Nybegynder
20. maj 2002 - 09:48 #1
Hvis dine filer er navngivet på en måde der kan tælles op til med en for-next løkke, kunne det være løsningen.  Du bestemmer vel selv hvorledes de navngives?

Sværere bliver det at finde /html og indsætte noget FØR dette sted.  Der findes en funktion der kan tælle baglæns i en fil, tegn for tegn, men måske kommer der en smart løsning fra en 'ekspert'.

M.v.h.  Jørn
Avatar billede jennemaan Nybegynder
20. maj 2002 - 11:15 #2
strFilename=Dir("c:\ditbibliotek\*.htm")

While strFilename<>""

'gør det du skal gøre ved din fil

  strFilename=Dir()
Wend

/Jennemaan
Avatar billede tjacob Juniormester
21. maj 2002 - 12:46 #3
Denne kode vil indsætte en streng umiddelbart FØR </body>:

Dim sFile As String
    Dim sString As String, lPlace As Long
    Dim sPutString

    sFile = App.Path & "/test.html"

    Open sFile For Input As #1
        sString = StrConv(InputB(LOF(1), 1), vbUnicode)
    Close #1
   
    lPlace = InStr(1, sString, "</body>", vbTextCompare) - 1
    sPutString = "<h2>Dette er en test.</h2>" & vbCrLf
    sString = Left(sString, lPlace) & sPutString & Right(sString, Len(sString) - lPlace)

    Open sFile For Output As #1
        Print #1, sString
    Close #1

Dette kunne du så kombinere med jennemaans forslag, og erstatte sFile med strFilename. Du kunne også erstatte sPutString med en tekstbox.
Du kan også ændre linien : lPlace = InStr(1, sString, "</body>", vbTextCompare) - 1, og indsætte et andet kriterium end "</body>, men det SKAL være en unik streng i teksten (kildekoden).

/tjacob
Avatar billede spejder_leon Nybegynder
22. maj 2002 - 17:54 #4
Jeg har selv fundet løsningen.

Jeg har indsat en drev, bibliotek og filboks. og oprettet en liste. når jeg vælger filer fra min filboks overføres den fulde path til listen.

Herefter bruger åbner jeg filerne og indsætter dem i en richtekstbox som har metoden richtekstbox.find("Søgekriterium")

Har testet programmet og det virker - har også udviklet funktion "Søg og erastat alle forekomster." Regner med at lægge prog på nettet når det er helt køreklart...

/Leon
Avatar billede spejder_leon Nybegynder
22. maj 2002 - 17:58 #5
Jeg takker for hjælpen, dog har jeg ikke kunnet bruget Jennemaan's ide, da filerne er temmelig forskelligt navngivet.

Jeg havde lavet prog færdig inden Jacob kom med kommentaren, men du har tydeligvis brugt en del tid. derfor lidt point... Tak for hjælpen
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