Avatar billede denero Juniormester
28. januar 2010 - 09:48 Der er 3 kommentarer og
1 løsning

Slette indhold i bogmærke, samt bogmærke

Indsætter "tekstsæt" i et dokument. Disse består af en tekstlinje (punktopstilling) et sted i dok. samt 2 rækker i en eksisterende tabel (i dok.) et andet sted. Der er flere forskellige "tekstsæt". Kan man mærke de enkelte tekstsæt, så man senere kan fortryde og slette et givent "tekstsæt". Indsættelse af "tekstsættene" "foregår" med VBA
Avatar billede Lene Fredborg Ekspert
28. januar 2010 - 11:57 #1
Det kan jo være lidt svært at råde dig uden at kende mere til dit projekt.

Kodelinjen
ActiveDocument.Bookmarks("Test").Delete
sletter bogmærket "Test", men bevarer indholdet

Kodelinjen
ActiveDocument.Bookmarks("Test").Range.Delete
sletter bogmærket "Test" OG indholdet i bogmærket (det, du ønsker at opnå)

Der vil være flere muligheder for at gøre det, du gerne vil. En mulighed er, at du under indsættelse af "tekstsættene" også opretter 2 bogmærker, som "omkranser" det indsatte. Så kan det lade sig gøre at slette indholdet ved at bruge princippet fra 2. kodelinje ovenfor. Men du skal jo selv have styr på bogmærkenavnene.


Princippet i kode, der kan slette indhold i bogmærker i det aktive dokument, kunne være:

    Dim strBName As String
   
    'Bogmærkets navn
    strBName = "MitBogmærke"
   
    With ActiveDocument
        'Tjek om bogmærket findes
        If .Bookmarks.Exists(strBName) Then
            .Bookmarks(strBName).Range.Delete
        Else
            'Bogmærket findes ikke - vis en meddelelse
            MsgBox "Teksten kunne ikke slettes, da et bogmærke med navnet """ & _
            strBName & """ mangler.", _
            vbOKOnly + vbInformation, "Tekst kunne ikke slettes"
        End If
    End With

Du kunne bygge koden ind i en Function eller Private Sub, som kan kaldes, hver gang et bogmærke med indhold skal slettes. Du kan sende bogmærkenavnet med som parameter. Du skal så håndtere det på passende vis, hvis der er problemer - hvis f.eks. det ene bogmærke var der, men det andet ikke.

Generelt: bogmærker er sårbare. En bruger kan slette et bogmærke uden at vide det.
Avatar billede denero Juniormester
28. januar 2010 - 13:22 #2
Jeg sætter 2 bogmærker ind ved hver tekstsæt - et ved den tekst, som er punktopstillet(a) og et ved den, der er i tabel (b).
Da der er en tabel, kører jeg koden "2 gange":

Sub FjernTekstsæt()

'
'  Hvis bogmærke eksisterer for tekst
'
    If ActiveDocument.Bookmarks.Exists("a") = True Then
'
'  Slet
'
    ActiveDocument.Bookmarks("a").Select
    Selection.Delete
End If

'
'  Hvis bogmærke eksisterer for tabel
'
    If ActiveDocument.Bookmarks.Exists("b") = True Then
'
'  Slet
'
    ActiveDocument.Bookmarks("b").Select
    Selection.Rows.Delete
End If
End Sub

De tekstsæt, der sættes ind skal selvfølgelig have unikke bogmærkenavne, som bliver indsat, når teksten sættes ind. De omkranser tekstsættene. Når tekstsættene sættes ind afspilles koden først for at sikre mod dubletter.De enkelte tekstsæt kan evt slettes via en knap for hvert sæt.
Der er rigtigt, at bogmærkerne er sårbare, men de dokumenter, der er tale om, sættes der kun tekst ind i via makroer.

Tak for hjælpen, ligger du et svar.
Avatar billede Lene Fredborg Ekspert
28. januar 2010 - 13:59 #3
Lige et tip: Hvis du bruger min version, hvor der er brugt Range i stedet for Selection, har du den fordel, at du overhovedet ikke behøver at ændre på, hvad der er markeret i dokumentet (Selection). Så skal du ikke holde styr på at finde tilbage igen. Der er også andre fordele ved at bruge Range i stedet for Selection - f.eks. vil koden typisk være hurtigere, og der er ingen flimren på skærmen.

For at få koden til at slette tabelindhold inkl. selve rækkerne kan du bruge:
ActiveDocument.Bookmarks("b").Range.Rows.Delete
Avatar billede denero Juniormester
28. januar 2010 - 14:12 #4
Ok, godt nok at vide.
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
Tag et kursus i Word og øg effektiviteten

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