Avatar billede baitianlong Nybegynder
20. september 2004 - 17:34 Der er 10 kommentarer og
2 løsninger

Program, der kan sortere i tekst

Hej. Er der en, der kan hjælpe mig med at skrive noget VBA, jeg kan eksekvere i word ?

For hver linie i et dokument, skal den, hvis linien ikke indeholder et bestemt ord, slette linien.

Er det muligt / let ?

Alternativt, et program, der kan gøre det med en tekstfil :)
Avatar billede joern Nybegynder
20. september 2004 - 18:05 #1
Hej.

Kender ikke til VBA, kun til VB, hvor man med en tekstfil kan gøre således:

Dim linie as string

Open dinsti & dinfil for input as #1
Open dinsti & udfil for output as #2

  Do while eof(1) = false
    line input #1, linie
    if instr(linie, "ord") > 0 then print #2, linie
  Loop

Close #1
Close #1

Filecopy dinsti & udfil, dinsti & dinfil

M.v.h.  Jørn
Avatar billede baitianlong Nybegynder
20. september 2004 - 18:14 #2
Jeg har ikke mulighed for eller forstand på at kompile det selv... Kan du lave det om til et lille program, jeg kan køre på min tekstfil ? :)
Avatar billede joern Nybegynder
20. september 2004 - 19:23 #3
Hej.

En hovedårsag til, at jeg ikke kender VBA er, at jeg ikke anvender programmerne fra Office-Suiten.  Som tekstbehandler bruger jeg Lotus Ami Pro, og database-strukturer danner jeg selv.
Nu har jeg installeret Word 2000 og kigget i VBA design-vinduet.  Det er ikke meget man umiddelbart kan gøre dér.  Man skulle ellers tro at strengbehandling som det du efterspørger, var en mulighed.

Der er forskel på - her på Eksperten - at hjælpe med et problem, og så at skrive hele - selv små - programmer.  Med et program som du efterspørger, skal man kunne vælge hvilken fil der skal arbejdes på og hvilket ord (streng) der skal søges efter.
Jeg anvender VB5 og Win2000.  Skal programmet indeholde valg af fil fra standard dialogboks må den 'rigtige' common-dialog være tilstede i din installation.

Min erfaring er, at det ikke - trods simpelheden - klares på 5 minutter.

Inden jeg evt. laver sådan et program, må du op med nogle oplysninger.  Når du siger 'linier', mener du så afsnit?  Altså den tekst de står mellem to 'hårde linieskift'.
Den kan jo godt være flere linier når den vises på skærmen.
Læg nogle linier som eksempel her.

Hvor mange linier kan der forekomme i de filer det drejer sig om, er det evt. kun én bestemt fil med et fast navn.  Så er det simplere.

Se gerne http://jkfsoft.dk/kravspec.htm    Dette er jo ikke noget at lave beskrivelser af, men for at undgå forgæves arbejde skal der lidt form på sagen.  Min mail-adr. står på siden og desuden her på 'Eksperten' i min profil.

M.v.h.  Jørn
Avatar billede baitianlong Nybegynder
20. september 2004 - 20:23 #4
Jeg ved udmærket at eksperten handler om hjælp til selvhjælp... Nu skal jeg forklare min sag.

Jeg leger med at lave noget hvor min hjemmeside kan se hvor folk kommer fra v.hj.a deres IP adresse. Til det formål, fandt jeg på nettet en databasefil med IP-numre og Landekoder. Filen ser sådan her ud:

"33996344,""33996351"",""GB"",""GBR"",""UNITED KINGDOM"""
"50331648,""69956103"",""US"",""USA"",""UNITED STATES"""
"69956104,""69956111"",""BM"",""BMU"",""BERMUDA"""
"69956112,""83886079"",""US"",""USA"",""UNITED STATES"""
"94585424,""94585439"",""SE"",""SWE"",""SWEDEN"""
"100663296,""121195295"",""US"",""USA"",""UNITED STATES"""
"121195296,""121195327"",""IT"",""ITA"",""ITALY"""
"121195328,""152305663"",""US"",""USA"",""UNITED STATES"""

...og så er der ellers 904 sider (optalt i word) ligesom dette. Jeg skrev en php-side, som kunne putte dataen ind i min database på mit webhotel. Men det er simpelthen for meget. Derfor besluttede jeg at jeg kun var interesserede i dem, der kom fra danmark, tyskland, polen - resten kan komme i samme gruppe. Så gik jeg i gang med at finde de linier, hvor der stod DENMARK, og kopiere dem over i et andet dokument... Men det er arbejde til flere dage, og bagefter kommer de andre to lande.

Med php kan man ret nemt åbne filen og fjerne linierne. Men det kræver så meget hukommelse at jeg ikke må gøre det på webhotellet - den siger simpelthen NEJ.

Derfor tænkte jeg at det lige var en sag for et lille-bitte VB-script/program.

Hvis vi nu siger at filen hedder ip.txt, og jeg kører dit program i samme mappe. Er det så ikke relativt enkelt. Den skal "bare" fjerne de linier, der ikke indeholder "DK", "DE", eller "PL". Der behøver naturligvis ikke at være brugerflade og alt det du frygter.
Avatar billede arne_v Ekspert
20. september 2004 - 20:46 #5
En lettere modficeret udgave af koden som:
  - prompter for input og output fil (jeg regner med at det er overflødigt at kopiere
    oveni=
  - er testet at den virker i VBA

Function fjern()
    Dim fil1, fil2, linie As String
    fil1 = InputBox("Input file: ")
    fil2 = InputBox("Ouput file: ")
    Open fil1 For Input As #1
    Open fil2 For Output As #2
    Do While Not EOF(1)
        Line Input #1, linie
        If InStr(linie, """""DK""""") > 0 Or InStr(linie, """""DE""""") > 0 Or InStr(linie, """""PL""""") > 0 Then
          Print #2, linie
        End If
    Loop
    Close #1
    Close #2
End Function
Avatar billede baitianlong Nybegynder
20. september 2004 - 20:52 #6
Vil det sige at jeg bare kan kopiere det script ind i Word's vba - editor og køre det ?

Og det var da en hulens masse anførselstegn :)
Avatar billede martin_moth Mester
20. september 2004 - 20:53 #7
Netop - den kode joern har givet virker lige så fint i VBA til word, excel, whatever, som til VB.

Så copy-paste, og du er kørende
Avatar billede arne_v Ekspert
20. september 2004 - 20:55 #8
Den skulle være copy paste klar.

Den søger efter ""DK"" i linien og det bliver altså til en streng konstant """""DK""""".
Avatar billede baitianlong Nybegynder
20. september 2004 - 20:59 #9
Ha ha... Det virkede sgi :))

Hvor smukt. Filen blev reduceret fra 2.86 MB til 357 KB

Tusind tak. Arne, smid lige et svar
Avatar billede arne_v Ekspert
20. september 2004 - 21:00 #10
svar
Avatar billede joern Nybegynder
20. september 2004 - 21:30 #11
Hej.

Dér kan man bare se.  Godt at en VBA-mand kom på banen.

M.v.h.  Jørn
Avatar billede baitianlong Nybegynder
20. september 2004 - 21:33 #12
og jeg som troede han var en Java-mand :))
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