Avatar billede chiefbigchief Mester
27. juli 2008 - 22:01 Der er 16 kommentarer og
1 løsning

Søg og erstat i mange dokumenter.

Hej eksperter!
Jeg er flyttet og har mange dokumenter hvori min adresse er skrevet.
Er det muligt at søge og erstatte adressen i alle dokumenter på en smart måde.
De alle dokumenter er skrevet i Word 2003, Jeg har nu Word 2007 installeret.
Jeg kar dog Word 2003 liggende som jeg kan installere hvis det er nødvendigt.
M.v.h. C.B.C.
Avatar billede supertekst Ekspert
27. juli 2008 - 23:02 #1
Via VBA - kan det lade sig gøre.

Ligger dokumenterne i en eller flere mapper?
Avatar billede chiefbigchief Mester
28. juli 2008 - 07:48 #2
Dokumenterne er på flere drev og i flere mapper
C.B.C
Avatar billede supertekst Ekspert
28. juli 2008 - 08:53 #3
Ok - er der noget der er fælles i de forskellige dokument-navne?
Avatar billede chiefbigchief Mester
28. juli 2008 - 09:40 #4
Dokumentnavnene har intet til fælles, ud over selvfølgelig efternavnet, .doc
C.B.C.
Avatar billede supertekst Ekspert
28. juli 2008 - 10:33 #5
Ok - så vidt jeg kan se er der to muligheder:

1) En global gennemgang af alle relevante drev/mapper/filer af .doc-typen med søg/erstat

2) Oprettelse af en makro i Normal.dot, der udfører søg/erstat i det aktuelle dokument, når dette åbnes.
Avatar billede chiefbigchief Mester
28. juli 2008 - 11:24 #6
Oprettelse af en makro i Normal.dot, der udfører søg/erstat i det aktuelle dokument, når dette åbnes.
Vil det ikke betyde at dokumentet ikke bliver rettet hvis jeg sender det til en anden bruger, uden selv at have haft det åbnet?
Jeg kopierer ofte dokumenterne over på en USB stik og indsætter dem på mine børns P.C.er.
C.B.C
Avatar billede supertekst Ekspert
28. juli 2008 - 11:40 #7
Jo - det vil i denne situation ikke fungere efter hensigten.

Så er det vel alternativ 1?

Spørgsmål:
Det der skal rettes - vil det være anført i selv dokumentteksten eller i sidehoved/sidefod?
Avatar billede chiefbigchief Mester
28. juli 2008 - 11:53 #8
Alternativ 1 er egentlig det jeg gerne vil undgå, nemlig at åbne alle dokumenterne, der er flere tusinde.
Ang.dit spørgsmål: Det der skal rettes er i dokumentteksten.
C.B.C.
Avatar billede chiefbigchief Mester
28. juli 2008 - 13:21 #9
Løsningsforslag?
Kunne man oprette et dokument i Word med en VBA kode i, der søger efter dokumentnavne med endelsen .doc åbne et af gangen rette det man ønsker rettet gemme med samme navn, lukke dokumentet igen og gå videre til næste dokument.
M.v.h. C.B.C.
Avatar billede supertekst Ekspert
28. juli 2008 - 14:59 #10
Ja - det ville så være alternativet. Men du misforstod meningen med 1) "En global gennemgang" - dette skal naturligvis udføres af VBA-koden.
Avatar billede chiefbigchief Mester
28. juli 2008 - 15:14 #11
Kan du hjælpe med makroen, det er begrænset hvad jeg kan i VBA programmering.
Gå ud på disken udpege dokumenter der kun har efternavn få dem ladet ind og rettet og gemme dem igen er over mine evner.
På forhånd tak C.B.C.
Avatar billede supertekst Ekspert
28. juli 2008 - 17:46 #12
Ja - ser på det senere....
Avatar billede supertekst Ekspert
29. juli 2008 - 00:53 #13
version 1 - prøv på "test-mappe"

Rem BEMÆRK LINIER I KODEN - MARKERET MED <---------------------
rem
Rem Når dokumentet åbnes igangsættes makroen
Rem 1)  Dialogboksen ÅbnFil vises
Rem 2)  Udpeg drev og mappe
Rem 3)  Når denne er valgt - trykkes der på Annuller
Rem
Rem (Der forventes ikke makroer i de relevante dokumenter - ellers giv signal)
Rem
Rem Koden anbringes i et tomt Word-dokument (Alt+F11)
Rem =================================================
Dim xDoc
Sub AutoOpen()                                  'Vælg hvilke drev/mappe
Dim aktuelleSti
    aktuelleSti = valgAfSti
    If aktuelleSti <> "" Then
        findFiler aktuelleSti
       
        MsgBox ("Søg&Erstat på stien: " + aktuelleSti + " er udført")
    Else
        MsgBox ("Sti er ikke valgt")
    End If
End Sub
Private Function valgAfSti()
Dim doksti
    filNavn = ""
    On Error GoTo fejl1
   
    With Dialogs(wdDialogFileOpen)
        .Name = "*.doc"
        .Display
        valgAfSti = CurDir
       
        If Right(valgAfSti, 1) <> "\" Then
            valgAfSti = valgAfSti + "\"
        End If
    End With
         
    Exit Function
   
fejl1:
    valgAfSti = ""
End Function
Private Sub findFiler(aktuelleMappe)
Dim fs, f, f1, fc
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(aktuelleMappe)
    Set fc = f.Files

Rem Check de enkelte filer i valgte drev/mappe
    For Each f1 In fc
        If Right(LCase(f1.Name), 4) = ".doc" Then
            udførSøgErstat aktuelleMappe + f1.Name
        End If
    Next
End Sub
Private Sub udførSøgErstat(docFil)
    Set xDoc = CreateObject("Word.Application")
    With xDoc
        .Documents.Open FileName:=docFil
    End With

Rem Gentages det nødvendige antal gange
    søgErstat "gl. adresse", "Ny adresse"        '<----------------------
    søgErstat "gl. postnr", "Nyt postnr"          '<----------------------
   
    If xDoc.ActiveDocument.Saved = False Then
        xDoc.ActiveDocument.Save
    End If
   
    xDoc.Application.Quit
    Set xDoc = Nothing
End Sub
Private Sub søgErstat(søg, erstat)
    With xDoc
        Set myRange = .ActiveDocument.Range(Start:=0, End:=0)
        Selection.HomeKey Unit:=wdStory
        Selection.Find.Replacement.ClearFormatting
        With .Selection.Find
            .Text = søg
            .Replacement.Text = erstat
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchControl = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        .Selection.Find.Execute Replace:=wdReplaceAll
    End With
End Sub
Avatar billede chiefbigchief Mester
29. juli 2008 - 11:19 #14
Jeg har oprettet en mappe FORSØG i denne er dokumentet test placeret, Dokumentet indeholder 2 linjer Adresse " GL " Postnummer " 1234 " som også er indsat i koden og i erstat skrevet " NY " " 5678 "
Makroen er er placeret i et tomt dokument -HENT RET GEM- når dette dokument åbnes, vises Dialogboksen ÅbnFil ganske rigtigt og jeg udpeger mappen FORSØG og trykker på annuller. Derefter åbnes dialogboksen igen og jeg vælger den mappe der skal gemmes i og dokumentet rettes.
Så langt så godt, men der mangler tilsyneladende en måde at få stoppet makroen på da den selvfølgelig starter forfra når en mappe er gennemgået.
Hvordan får man den stoppet?
C.B.C.
Avatar billede supertekst Ekspert
29. juli 2008 - 13:03 #15
Nu skulle det vel ikke være sådan, at selve "SystemDokumentet" m/makroen også ligger i mappen FORSØG?
Hvis det er tilfældet - så prøv at flytte dette til anden placering...
Avatar billede chiefbigchief Mester
29. juli 2008 - 23:50 #16
Jeg har været arbejdsramt så derfor denne pause i respons:
Du har ret det var nemlig sådan at jeg havde fået den lagt i alle dokumenter, efter denne rettelse virker det efter hensigten.
Tusind tak læg et svar du så rigeligt fortjent dine point.
M.v.h. C.B.C.
Avatar billede supertekst Ekspert
30. juli 2008 - 09:06 #17
Selv tak - her er et svar
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

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