Avatar billede itognet Nybegynder
20. januar 2002 - 21:20 Der er 4 kommentarer

Konverterere >2.000 UNC stier til drev navn i Word 97 filer

Jeg har 2.000 word 97 filer der linker til hver sin excel fil på en server.
Problemmet er at disse filer skal flyttes fra en server til en anden og at kæderne i Word filerne er registreret som UNC navne istedet for drevnavnet :(
DVS. at hvis/når der bliver flyttet, vil Word filerne kigge på den gamle server efter excel filerne.

Er der nogen der har set et værktøj til at håndtere sådan en situation.

Eller er der nogen der ved om man kan lave noget i Visual Basic som er indbygget i Word. Bare et kode eksempel kan hjælpe en del.
Avatar billede bak Forsker
23. januar 2002 - 23:17 #1
Her er en kode der åbner alle worddokumenter i et bibliotek + alle underbiblioteker. Hvis den finder et hyperlink der indeholder den gamle sti erstatter den med ny sti og gemmer filen. Indsæt selv brugervariablerne. Sti er den sti der skal søges worddokumenter i, gammeladresse= første del af den gamle hyperlinkssti fx. //Datasrv1/Data.
Ny_adresse= erstatningsadressen fx //Nordborg01/dataområde

Test den først for den er konverteret fra excel.

Sub Makro1()
Dim Sti, Gammeladresse, Ny_Adresse As String
Set fs = Application.FileSearch
'************************************
'BRUGERVARIABLE
Sti = "C:\dokumenter"
Gammeladresse = "C:\"
Ny_Adresse = "C:\temp"
'************************************
Application.ScreenUpdating = False
With fs
.NewSearch
.LookIn = Sti
.SearchSubFolders = False 'Ændres efter behov
.FileName = "*.doc"
End With
If fs.Execute(SortBy:=msoSortByFileName, _
  SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To fs.FoundFiles.Count
    fil = fs.FoundFiles(i)
    Documents.Open fil, 0
    For Each h In ActiveDocument.Hyperlinks
            If InStr(h.Address, Gammeladresse) > 0 Then
                test = 1
                gl_adr = h.Address
                ny_adr = Ny_Adresse & Right(gl_adr, Len(gl_adr) - Len(gammel_adresse))
                h.Address = ny_adr
            End If
    Next
  If test = 1 Then
    ActiveDocument.Close savechanges:=True
    Else
    test = 0
    ActiveDocument.Close savechanges:=False
  End If
  Next
  End If
  Application.ScreenUpdating = True
  End Sub
Avatar billede bak Forsker
24. januar 2002 - 08:46 #2
Sorry, virker ikke helt efter hensigten.
Erstat linien
ny_adr = Ny_Adresse & Right(gl_adr, Len(gl_adr) - Len(gammel_adresse))
med

ny_adr = Replace(gl_adr, Gammeladresse, Ny_Adresse)
Avatar billede bak Forsker
24. januar 2002 - 09:18 #3
Hvis også hyperlinkteksten skal ændres kan du sætte denne linie ind under h.Address=ny_adr.
h.TextToDisplay = ny_adr
En ting jeg har glemt at skrive er at makroen kun kan køre i word2000, men retter selvfølgelig også word97 filer. Dette skyldes at funktionen replace ikke findes i word97. Dette kan omgåes ved selv at lave en tilsvarende funktion.
Avatar billede bak Forsker
28. januar 2002 - 15:24 #4
itognet> kan du bruge svaret??
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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