Avatar billede crjensen Juniormester
10. juli 2023 - 11:43 Der er 1 løsning

Konvertere tabeller til tekst

I et Word-dokument vil jeg gerne konvertere en lang række tabeller til tekst. Separatoren imellem cellerne skal være tegnet § med mellemrum før og efter.
Jeg har prøvet denne i MS Visual Basic, men det fungerer ikke. Den accepterer ikke wdSeparateBy§ og jeg ved i øvrigt heller ikke hvordan jeg får mellemrum før og efter §
Kan nogen hjælpe mig med en korrekt wdSeparateBy som lader tegnet § med mellemrum før og efter væres separator?

Sub TablesToText()
Dim tbl As Table
For Each tbl In ActiveDocument.Tables
tbl.ConvertToText
Separator:=wdSeparateBy§
Next tbl
Set tbl = Nothing
End Sub
Avatar billede Lene Fredborg Ekspert
10. juli 2023 - 12:37 #1
Man kan kun bruge ét tegn som separator. Du kan ikke bare selv "opfinde" en wdSeparateBy, men du kan angive et tegn som en almindelig string, f.eks. "§".

Du nødt til at have koden til først at konvertere og dernæst erstatte det anvendte tegn med " § "

Jeg har lavet nedenstående makro i VBA. Bemærk, at kun tabeller i hovedområdet af dokumentet vil blive konverteret (gælder også din version, hvis den ellers virkede). Hvis der er tabeller i sidehoved, sidefod, tekstbokse m.m., som skal konverteres, skal der noget mere kode til. Der er ikke indbygget fejlhåndtering i makroen – det må du vurdere, om du har brug for.

Se kommentarer i makroen.

--------------MAKRO START-------------
Sub ConvertAllTablesInDocToText()
    Dim tbl As Table
   
    With ActiveDocument
        'Konverter alle tabeller i hovedområdet til tekst
        'Sæt separator til et tegn, som ikke bruges andre steder i dokumentet, her "¤"
        For Each tbl In ActiveDocument.Tables
            tbl.ConvertToText Separator:="¤"
        Next tbl
    End With
   
    'Erstat alle "¤" med " § "
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "¤"
        .Replacement.Text = " § "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
       
        .Execute Replace:=wdReplaceAll
    End With
End Sub

--------------MAKRO SLUT-------------
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
Kurser inden for grundlæggende programmering

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