2017-08-11 1 views
1

J'ai un document Word bourré de codes et d'URL qui se trouvent partout dans le document.Comment copier des URL d'un document Word à un autre document?

J'ai essayé de trouver comment je peux extraire toutes les URL dans ce document Word et les faire coller sur un autre document?

les URL ont tous le même site qui commence par https://subdomain.domain.com ..

le problème est .. je aurai besoin le lien URL complète qui se termine généralement par un .jpg

j'ai essayé googler mais tous Je trouve des solutions sur la façon dont les URL des liens hypertexte peuvent être extraites. Je n'ai pas trouvé de solution à ma situation et j'espère que vous pourrez aider!

+0

veuillez marquer la réponse – AndriuZ

Répondre

0

Cela analyser le document et trouver toutes les URL pour vous et la sortie du tableau à une nouvelle Document:

Option Explicit 

Sub FindLinks() 
    Dim p As Paragraph 
    Dim vSplit As Variant 
    Dim nIndex As Integer 
    Dim sURLs() As String 
    ReDim sURLs(0) 

    ' find each URL and add it to an array 
    For Each p In ActiveDocument.Paragraphs 
    vSplit = Split(p.Range, " ") 
    For nIndex = 0 To UBound(vSplit) 
     If InStr(vSplit(nIndex), "https://stackoverflow.com") > 0 Then 
     ReDim Preserve sURLs(UBound(sURLs) + 1) 
     sURLs(UBound(sURLs)) = Replace(vSplit(nIndex), "src=", "") 
     End If 
    Next 
    Next 

    ' create a new document and output the array 
    Dim sURL As Variant 
    Documents.Add 
    For Each sURL In sURLs 
    Selection.TypeText sURL 
    Selection.TypeParagraph 
    Next 

End Sub 
+0

salut Brax merci de nous avoir aidés ... le script a bien fonctionné, mais chaque ligne de sortie ressemblait à ceci, "src =" https://subdomain.domain.com/wp-content/uploads /2017/05/1608-7a9fa682e3651b02.jpg?size=96184 & height = 640 & width = 640 & hash = 710eee30989aa7a871e3e682d4923e28" " de toute façon nous je peux juste avoir la sortie qui indique l'URL https: à la dernière partie de l'URL - soit jpg ou jpeg? – Alvin

+0

J'ai ajouté un 'Replace'. – braX

1

Je modifié le code pour envoyer les résultats à C: \ temp \ my_links.txt. Vous pouvez modifier le code pour changer la destination.

Public Sub GetUrls() 
    Dim r As Range 
    Dim outfile As String 

    outfile = "C:\temp\my_links.txt" 
    Open outfile For Output As #1 
    Set r = ActiveDocument.Range 
    r.Select 

    With Selection.Find 
     .ClearFormatting 
     .Text = "https://subdomain.domain.com/*.jpg" 
     .Forward = True 
     .Wrap = wdFindStop 
     .MatchWildcards = True 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchAllWordForms = False 
     .MatchSoundsLike = False 
    End With 

    Do While Selection.Find.Execute 
     Write #1, Selection.Text 
    Loop 

    Close #1 
End Sub 

Quand j'exécuter sur un fichier de test, je reçois ceci dans le fichier de sortie:

"https://subdomain.domain.com/res1/joe.jpg" 
"https://subdomain.domain.com/res2/cat.jpg" 

espoir qui aide.

+0

en essayant d'exécuter le code mais je pense que j'ai plus de données que 199. donc la fenêtre immédiate arrête d'afficher le reste. pourriez-vous aider à corriger le code où les résultats sont imprimés dans un nouveau document Word à la place? Je suppose que de cette façon, la limite de 199 ne se produira pas! – Alvin

+0

J'ai modifié le code pour envoyer les résultats à un fichier. Cela devrait concerner plus de 199 liens. – xidgel