Akademia VBA

czyli jak uzyskać władzę nad światem … danych

Kopiowanie i linkowanie plików Worda

Kategorie: Ogólne — Darek Kolasa o 12:19, 2 Wrz 2014

Ostatnio dotknąłem się do programowania Worda. Nie było to przyjemne uczucie ;)
No ale w końcu jest to Akademia VBA a nie Akademia VBA Excel i Access :)
Po zaznaczeniu jakiegoś tekstu kod kopiuje aktywny plik pod nazwą jak zaznaczenie i od razu robi link do niego. Używa też fajnej funkcji do odczyszczania tekstu ze zbędnych znaków specjalnych i innych zabronionych w nazwach obiektów i plików

Sub UtworzKopiePliku_i_Link()
    Dim MojDokument As Word.Document
    Dim Kopia As Word.Document
    Dim ZaznTekst As String
    Dim SciezkaMojDokument As String
    Dim SciezkaFolder As String
 
    ZaznTekst = fnCzystyTekst(Selection.Range.Text)
    If Len(ZaznTekst) = 0 Then
        MsgBox "Brak zaznaczenia!"
        Exit Sub
    End If
    Set MojDokument = ThisDocument
    SciezkaMojDokument = MojDokument.FullName
    SciezkaFolder = MojDokument.Path & "\"
    MojDokument.Bookmarks.Add ZaznTekst, Selection
    MojDokument.Save
    MojDokument.SaveAs SciezkaFolder & ZaznTekst & ".docm"
    Set Kopia = MojDokument
    Set MojDokument = Documents.Open(SciezkaMojDokument)
    Selection.GoTo What:=wdGoToBookmark, Name:=ZaznTekst
    MojDokument.Hyperlinks.Add Anchor:=Selection.Range, _
        Address:=Kopia.Name, TextToDisplay:=ZaznTekst
 
    Set MojDokument = Nothing
    Kopia.Close
    Set Kopia = Nothing
End Sub
 
Function fnCzystyTekst(Tekst As String)
    Dim Znak As String * 1, NrZnaku As Long
    For NrZnaku = 1 To Len(Tekst)
        Znak = Mid(Tekst, NrZnaku, 1)
        If Znak Like "[A-Z,a-z,0-9,Ć,Ę,Ł,Ó,Ś,Ż,Ź,ć,ę,ł,ó,ś,ż,ź]" Then
            fnCzystyTekst = fnCzystyTekst & Znak
        End If
    Next
End Function

Komentarze (0) »

Brak komentarzy

RSS komentarzy do wpisu. Adres trackback

Zostaw komentarz

Dozwolone znaczniki XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>