LibreOffice 25.2 Hjælp
The SFDocuments library provides methods and properties to facilitate the management and manipulation of LibreOffice documents.
Metoder, der kan anvendes på alle typer af dokumenter (tekstdokumenter, regneark, præsentationer og så videre) leveres af tjenesten SFDocuments.Document. Nogle eksempler er:
Åbning, lukning og lagring af dokumenter
Adgang til dokumenters standard- eller tilpassede egenskaber
De egenskaber, metoder eller argumenter, der er markeret med (*) er IKKE anvendelige på database-dokumenter.
Methods and properties that are specific to certain LibreOffice components are stored in separate services, such as SFDocuments.SF_Calc and SFDocuments.SF_Base.
Selv om Basic-sproget ikke tilbyder nedarvning mellem objektklasser, kan de sidstnævnte anses som underklasser af tjenesten SFDocuments.Document. Sådanne underklasser kan kalde de egenskaber og metoder, der beskrives herunder.
Før brug af tjenesten Document skal biblioteket ScriptForge være indlæst eller importeret:
Herunder er der tre forskellige måder at kalde tjenesten Document på.
Med metoden getDocument fra tjenesten ScriptForge.UI:
    Dim ui As Object, oDoc As Object
    Set ui = CreateScriptService("UI")
    Set oDoc = ui.GetDocument("Untitled 1")
  Alternativt kan du bruge metoderne CreateDocument og OpenDocument fra tjenesten UI.
    Set oDocA = ui.CreateDocument("Calc")
    Set oDocB = ui.OpenDocument("C:\Documents\MyFile.odt")
  Using a window name if the document is already open.
    Dim oDoc As Object
    Set oDoc = CreateScriptService("SFDocuments.Document", "Untitled 1") 'Default = ActiveWindow
  Using the document referenced by ThisComponent. This is specially useful when running a macro from within the Basic IDE.
    Dim oDoc As Object
    Set oDoc = CreateScriptService("Document", ThisComponent)
  Fra en makro udløst af en dokument-hændelse.
    Sub RunEvent(ByRef poEvent As Object)
        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.DocumentEvent", poEvent)
        ' (...)
    End Sub
  Tjenesten Document er tæt beslægtet med tjenesterne UI og FileSystem.
Undtaget, når dokumentet blev lukket med et program med metoden CloseFocument (hvor det er overflødigt), anbefales det at frigøre ressourcer efter brug:
    Set oDoc = oDoc.Dispose()
  
    from scriptforge import CreateScriptService
    ui = CreateScriptService("UI")
    doc = ui.GetDocument("Untitled 1")
    # (...)
    doc.Dispose()
  
    docA = ui.CreateDocument("Calc")
    docB = ui.OpenDocument("C:\Documents\MyFile.odt")
  
    doc = CreateScriptService("SFDocuments.Document", "Untitled 1")
  
    bas = CreateScriptService("Basic")
    doc = CreateScriptService("Document", bas.ThisComponent)
  
    def RunEvent(event)
        doc = CreateScriptService("SFDocuments.DocumentEvent", Event)
        # (...)
  Brug af forstavelsen "SFDocuments." under kald af tjenesten er frivillig.
| Navn | Skrivebeskyttet | Type | Beskrivelse | 
|---|---|---|---|
| CustomProperties (*) | Nej | Dictionary service | Returnerer en objektforekomst fra ScriptForge.Dictionary. Efter en opdatering kan den igen sendes til den egenskab, der opdaterer dokumentet.  | 
| Description (*) | Nej | String | Giver adgang til dokumentegenskaben Beskrivelse (også kendt som "Kommentarer") | 
| DocumentProperties (*) | Ja | Dictionary service | Returnerer et ScriptForge.Dictionary-objekt, der indeholder alle indførslerne. Dokumentets statitisk medtages. Bemærk, at de er specifikke for dokumenttypen. Eksempelvis medtager et Calc-dokument elementet "CelleOptælling". Andre dokumenter gør det ikke. | 
| DocumentType | Ja | String | Strengværdi med dokumenttypen ("Base", "Calc", "Writer" og så videre) | 
| ExportFilters (*) | Yes (Ja) | String array | Returns a list with the export filter names applicable to the current document as a zero-based array of strings. Filters used for both import/export are also returned. | 
| FileSystem | Yes (Ja) | String | Returns a string with the URL path to the root of the virtual file system of the document. Use the FileSystem service to view its contents, as well as to create, open and read files stored in it. Refer to this help page to learn more on how to access and manipulate folders and files in the virtual file system of a LibreOffice file. | 
| ImportFilters (*) | Yes (Ja) | String array | Returns a list with the import filter names applicable to the current document as a zero-based array of strings. Filters used for both import/export are also returned. | 
| 
            IsBase | Ja | Boolean | Præcis en af disse egenskaber er True for et givet dokument. | 
| Keywords (*) | Nej | String | Giver adgang til dokumentegenskaben Nøgleord. Repræsenteres som en komma-separeret liste over nøgleord | 
| Readonly (*) | Ja | Boolean | True hvis dokumentet faktisk er i skrivebeskyttet tilstand | 
| StyleFamilies (*) | Yes (Ja) | String array | List of available style families. Applicable to all document types except Base. | 
| Subject (*) | Nej | String | Giver adgang til dokumentegenskaben Emne | 
| Title (*) | Nej | String | Giver adgang til dokumentegenskaben Titel | 
| XComponent | Ja | UNO-objekt | The UNO object com.sun.star.lang.XComponent or com.sun.star.comp.dba.ODatabaseDocument representing the document. | 
| XDocumentSettings (*) | Ja | UNO-objekt | A com.sun.star.XXX.DocumentSettings UNO object, where XXX is either sheet, text, drawing or presentation. This object gives access to the internal UNO properties that are specific to the document's type. | 
Eksemplet herunder udskriver alle dokumentets egenskaber. Bemærk, at objektet oDoc, der returneres af metodenUI.OpenDocument er et SFDocuments.Document-objekt.
    Dim ui as Variant : Set ui = CreateScriptService("UI")
    Dim oDoc as Object
    Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")
    Dim propDict as Object
    Set propDict = oDoc.DocumentProperties
    Dim keys as Variant : propKeys = propDict.Keys
    Dim k as String, strProp as String
    For Each k In propKeys
        strProp = strProp & k & ": " & propDict.Item(k) & CHR$(10)
    Next k
    MsgBox strProp
    oDoc.CloseDocument()
  For at tilgå dokumentegenskaber i et Python-script skal brugeren adressere dem direkte ved at bruge deres navne, som vist herunder:
    doc = ui.GetDocument(r"C:\Documents\MyFile.ods")
    msg = doc.Title + '\n' + doc.Description + '\n' + doc.Keywords
    bas = CreateScriptService("Basic")
    bas.MsgBox(msg)
    doc.CloseDocument()
  | Liste over metoder i tjenesten Document | ||
|---|---|---|
| 
             Activate | ||
Returnerer True, hvis dokumentet kunne aktiveres. Ellers sker der ingen ændring i den faktiske brugerflade. Den svarer til metoden Activate i tjenesten UI.
Denne metode er nyttig, når man har brug fir at give fokus til et dokument, der minimeret eller skjult. when one needs to give focus for a document that is minimized or hidden.
svc.Activate(): bool
Eksemplet herunder finder, at filen "My_File.ods" allerede er åben, men ikke aktiv.
    Dim oDoc As Object
    Set oDoc = CreateScriptService("Document", "MyFile.ods")
    oDoc.Activate()
  
    doc = CreateScriptService("Document", "MyFile.ods")
    doc.Activate()
  Husk på, at du kan kalde tjenesten Document ved at overføre enten "Document" eller "SFDocuments.Document" til tjenesten CreateScriptService
Lukker dokumentet. Hvis dokumentet allerede er lukket, uanset hvorden det blev lukket, har denne metode ingen virkning og returnerer False.
Metoden returnerer også False, hvis brugeren afviser at lukke den.
Returnerer True, hvis det lykkedes at lukke dokumentet.
svc.CloseDocument(saveask: bool = True): bool
gem_spørg: HvisTrue (sand) (standard), bedes brugeren om at bekræfte, om ændringerne skal skrives til disken. Dette argument ignoreres, hvis dokumentet ikke blev ændret.
    If oDoc.CloseDocument(True) Then
        ' ...
    End If
  
    if doc.CloseDocument(True):
        # ...
  Opretter et nyt menuelement i menulinjen på et givet dokumentvindue.
Denne metode returnerer en forekomst af tjenesten SFWidgets.Menu.
Den oprettede menu er kun tilgængelig under den aktuelle LibreOffice-sessin og gemmes hverken i dokumentet eller i de generelle programindstillinger. Derfor får lukning af dokumentvinduet menuen til at forsvinde. Den kommer kum frem igen, når den makro, der opretter menuen, udføres igen.
svc.CreateMenu(menuheader: str, [before: any], submenuchar: str = ">"): svc
menuheader (menuoverskrift): Den nye menus topniveau-navn.
before: Navnet (som en streng) eller positionen (som et heltal startende med 1) på en eksisterende menu, som den nye menu placeres foran. Hvis der ikke er defineret nogen værdi for dette argument, oprettes menuen på den sidste plads på menulinjen.
submenuchar (undermenutegn): Det skilletegn, der bruges til at oprette menutræer under kald af metoder som AddItem (tilføj_element) fra tjenesten Menu. Standardværdien er ">".
    Dim oDoc as Object, oMenu as Object
    Set oDoc = CreateScriptService("Document")
    Set oMenu = oDoc.CreateMenu("Min menu")
    With oMenu
        ' Føjer elementer til menuen
        .AddItem("Item A")
        .AddItem("Item B")
        ' ...
        ' Når menuen er oprettet, kan forekomsten af tjenesten fjernes
        .Dispose()
    End With
  
    doc = CreateScriptService("Document")
    menu = doc.CreateMenu("Min menu")
    menu.AddItem("Item A")
    menu.AddItem("Item B")
    # ...
    menu.Dispose()
  Se hjælpesiden SFWidgets.Menu for at få mere at vide om, hvordan menuer oprettes/fjernes i LibreOffice dokumentvinduer.
Suppresses a single style or an array of styles given by their names within a specific styles family. Only user-defined styles may be deleted, built-in styles are ignored. It applies to all document types except Base and FormDocument.
svc.DeleteStyles(family: str, styleslist: str[1..*])
family: One of the style families present in the actual document, as a case-sensitive string. Valid family names can be retrieved using StyleFamilies property.
styleslist: A single style name as a string or an array of style names. The style names may be localized or not. The StylesList is typically the output of the execution of a Styles() method.
    ' Removing unused paragraph styles
    Const family = "ParagraphStyles"
    aList = oDoc.Styles(family, used := False, userDefined := True)
    oDoc.DeleteStyles(family, aList)
  
    # Removing styles according to a prefix
    a_list = doc.Styles('ParagraphStyles', namepattern = "Py*")
    doc.Styles('ParagraphStyles', a_list)
  Suspends user interface (UI) updates during the execution of a macro. Optionally, the mouse pointer can be changed into an hourglass while UI updates are suspended.
This method may provide some performance benefits for macros that perform numerous operations that require UI updates.
svc.Echo(echoon: bool = True, hourglass: bool = False)
echoon: Specify False to suspend UI updates. The default value is True, which enables real time UI updates.
hourglass: Specify True to change the mouse pointer to an hourglass (Default = False).
Moving the mouse pointer after it changed to an hourglass may cause it to switch to a different pointer depending on its new background.
    ' Suspends UI updates and change mouse pointer to an hourglass
    oDoc.Echo(EchoOn := False, HourGlass := True)
    ' Other macro commands
    ' ...
    ' Restores UI updates and mouse pointer
    oDoc.Echo()
  
    doc.Echo(echoon = False, hourglass = True)
    ...
    doc.Echo()
  Eksporterer dokumentet direkte som en PDF-fil til den angivne placering. Returnerer True (sand), hvis det lykkedes at oprette PDF-filen.
Eksportindstillinger kan sættes enten manuelt med dialogen eller ved at kalde metoderne GetPDFExportOptions (hent_PDF-eksport-indstillinger) og SetPDFExportOptions (sæt_PDF-eksport-indstillinger) fra tjenesten Session.
svc.ExportAsPDF(filename: str, overwrite: bool = False, opt pages: str, opt password: str, opt watermark: str): bool
filnavn: Den fuldstændige sti og filnavn på den PDF-fil, der skal oprettes. Det skal følge notationen i SF_FileSystem.FileNaming.
overskriv: Angiver, om målcellen kan overskrives (Standard = False - falsk). Der vil ske en fejl, hvis overwrite (overskriv) er sat til False (falsk) og målfilen allerede eksisterer.
sider: Streng, der angiver, hvilke sider, der skal eksporteres. Dette argument bruger den samme notation som i dialogen .
adgangskode: Angiver en adgangskode til åbning af PDF-filen.
vandmærke: Tekst, der skal bruges som vandmærke i PDF-filen og som bliver tegnet på hver side i den resulterende PDF.
Følgende eksempel eksporterer det aktuelle dokument som en PDF-fil, definerer en adgangskode og overskriver målfilen, hvis den allerede eksisterer.
    oDoc.ExportAsPDF("C:\User\Documents\myFile.pdf", Password := "1234", Overwrite := True)
  Kodestumpen herunder henter de aktuelle PDF-eksportindstillinger og bruger dem til at oprette PDF-filen.
    Dim exportSettings as Object, oSession as Object
    oSession = CreateScriptService("Session")
    exportSettings = oSession.GetPDFExportOptions()
    ' Sætter indstillingen for eksport af kommentarer som PDF-noter til True (sand).
    exportSettings.ReplaceItem("ExportNotes", True)
    oSession.SetPDFExportOptions(exportSettings)
    oDoc.ExportAsPDF("C:\User\Documents\myFile.pdf")
  
    doc.ExportAsPDF(r"C:\User\Documents\myFile.pdf", password = "1234", overwrite = True)
  
    session = CreateScriptService("Session")
    exportSettings = oSession.GetPDFExportOptions()
    exportSettings.ReplaceItem("ExportNotes", True)
    session.SetPDFExportOptions(exportSettings)
    doc.ExportAsPDF(r"C:\User\Documents\myFile.pdf")
  Denne metode sender dokumentets indhold til standardprinteren eller til den printer, der blev defineret med metoden SetPrinter.
Returnerer True (sand), hvis det lykkedes at udskrive dokumentet.
svc.PrintOut(pages: str = "", copies: num = 1): bool
sider: De sider, der skal udskrives, som en streng. ligesom i brugerfladen. Eksempel: "1-4;10;15-18". Standard er alle sider.
kopier: Antallet af kopier. Standard er 1.
    If oDoc.PrintOut("1-4;10;15-18", Copies := 2) Then
        ' ...
    End If
  
    if doc.PrintOut(copies=3, pages='45-88'):
        # ...
  Fjerner en topniveau-menu fra menulinjen i et givet dokumentvindue.
Returnerer True (sand), hvis den angivne menu kunne fjernes. Hvis den angivne menu ikke eksisterer, returnerer metoden False (falsk).
Denne metode kan bruges til at fjerne ethvert menuelement fra dokumentvinduet, herunder standardmenuer. Ingen af disse ændringer på menulinjen gemmes imidlertid i dokumentet eller i programindstillingerne. For at genoprette menulinjen med standard-indstillingerne, lukker du bare dokumentvinduet og åbner det igen.
svc.RemoveMenu(menuheader: str): bool
menuheader (menuoverskrift): Topniveaunavnet på den menu, som skal fjernes.
    Dim oDoc as Object
    Set oDoc = CreateScriptService("Document")
    oDoc.RemoveMenu("Min Menu")
  
    doc = CreateScriptService("Document")
    doc.RemoveMenu("Min menu")
  Udfører en UNO-kommando i det dokumentvindue, der er knyttet til forekomsten af tjenesten. Nogle få typiske kommandoer er: Gem, Gem som, Eksportér til PDF, Fortryd, Kopiér, Indsæt, og så videre.
Dokumentet selv behøver ikke at være aktivt for at kunne køre kommandoer.
Kommandoer kan køres med eller uden argumenter. Argumenter valideres ikke før kommandoen køres. Hvis kommandoen eller dens argumenter er ugyldige, sker der intet.
Se hele listen over UNO-kommandoer, der kan køres i LibreOffice på wikisiden Udvikling/Forsendelseskommandoer.
svc.RunCommand(command: str, [args: any])
Kommando: Streng med Stort-og-småt, der indeholder UNO-kommandoens navn. Medtagelse af forstavelsen ".uno:" i kommandoen er valgfri. Selve kommandoens korrekthed tjekkes ikke. Hvis der ikke sker noget efter kaldet af kommandoen er kommandoen sandsynligvis forkert.
args: For hvert argument, der skal videregives til kommandoen, skal du specificere et par, der indeholder argumentets navn og værdi.
Følgende eksempel kører kommandoen SelectData i en Calc-fil kaldet "MinFil.ods", som vil resultere i markeringen af dataområdet, baseret på den aktuelt valgte celle. Bemærk, at denne kommando ikke kræver nogen argumenter.
    Set oDoc = CreateScriptService("Document", "MyFile.ods")
    oDoc.RunCommand("SelectData")
  Herunder er der et eksempel, der kører UNO-kommandoen ReplaceAll (erstat_alle) og videregiver værdier som dens argumenter SearchString (søg_streng) og ReplaceString (erstat_streng). Kørsel af denne kommando erstatter alle forekomster af strengen "abc" med "ABC" på det aktuelle ark.
    ' Argumenter videregivet til kommandoen:
    ' SearchString  = "abc"
    ' ReplaceString = "ABC"
    oDoc.RunCommand(".uno:ReplaceAll", "SearchString", "abc", "ReplaceString", "ABC")
  Bemærk, at kald af kommandoen ReplaceAll (erstat_alle) uden argumenter åbner dialogen .
    doc = CreateScriptService("Document", "MyFile.ods")
    doc.RunCommand("SelectData")
  
    doc.RunCommand(".uno:ReplaceAll", "SearchString", "abc", "ReplaceString", "ABC")
  I Python er det også muligt at kalde RunCommand (kør_kommando) med nøgleordsargumenterne:
    doc.RunCommand(".uno:ReplaceAll", SearchString = "abc", ReplaceString = "ABC")
  Hver LibreOffice-komponent har sit eget sæt af tilgængelige kommandoer. En nem måde at lære kommandoer på er at gå til Funktioner - Tilpas - Tastatur. Når du placerer musen over en funktion på listen Funktioner, vises et værktøjstip med den tilsvarende UNO-kommando.
Gemmer dokumentet på den filplacering, det blev hentet fra. Metoden ignoreres, hvis dokumentet ikke blev ændret.
Returnerer False (Falsk), hvis dokumentet ikke kunne gemmes. Der sættes et fejlflag, hvis filen er åbnet som skrivebeskyttet, eller hvis det er en ny fil, der endnu ikke er blevet gemt.
Selve dokumentet behøver ikke at være aktivt, for at køre denne metode.
svc.Save(): bool
    If Not oDoc.Save() Then
        ' ...
    End If
  
    if not doc.Save():
        # ...
  Gemmer dokumentet på den givne filplacering. Den nye placering bliver det nye filnavn, som simple metodekald Save (Gem) anvendes på.
Returnerer False (Falsk), hvis dokumentet ikke kunne gemmes. Der sættes et fejlflag, hvis overskrivning af målet afvises eller når målet har attributten Read-only (Skrivebeskyttet).
Selve dokumentet behøver ikke at være aktivt for at køre denne metode.
svc.SaveAs(filename: str, overwrite: bool = False, password: str = '', filtername: str = '', filteroptions: str = ''): bool
fil_navn: En streng, der indeholder det filnavn, der skal bruges. Det skal følge notationen SF_FileSystem.FileNaming.
overskriv: Hvis True (sand), kan målfilen blive overskrevet (standard = False (falsk)).
adgangskode (*): En streng uden mellemum, der skal beskytte dokumentet.
filter_navn (*): Navnet på et filter, der skal bruges til at gemme dokumentet. Hvis argumentet gives videre, skal filteret eksistere.
filterindstillinger (*): En valgfri streng med indstillinger, der er forbundet med dette filter.
    oDoc.SaveAs("C:\Documents\NewCopy.odt", overwrite := True)
  
    doc.SaveAs(r"C:\Documents\NewCopy.odt", overwrite = True)
  Gemmer en kopi eller eksporterer dokumentet til den givne filplacering. Den faktiske placering er uændret.
Returnerer False (Falsk), hvis dokumentet ikke kunne gemmes. Der sættes et fejlflag, når overskrivning af målet afvises eller når målet har atrributten Read-only (Skrivebeskyttet).
Selve dokumentet behøver ikke at være aktivt for at køre denne metode.
svc.SaveCopyAs(filename: str, overwrite: bool = False, password: str = '', filtername: str = '', filteroptions: str = ''): bool
filnavn: En streng, der indholder det finavnl, der skal bruges. Det skal følge notationen iSF_FileSystem.FileNaming.
overskriv: Hvis True (sand), kan målfilen blive overskrevet (Standard = False (falsk)).
adgangskode (*): En streng uden mellemrum, der skal beskytte dokumentet.
filternavn (*): Navnet på et filter, der skal bruges til at gemme dokumentet. Hvis dette argument gives videre, skal filteret eksistere.
filterindstillinger (*): En valgfri streng, der er tilknyttet filteret.
    oDoc.SaveCopyAs("C:\Documents\Copy2.odt", Overwrite := True)
  
    doc.SaveCopyAs(r"C:\Documents\Copy2.odt", overwrite = True)
  Definerer dokumentets printerindstillinger.
Returnerer True (sand), når den lykkes.
svc.SetPrinter(opt printer: str, opt orientation: str, paperformat: str): bool
printer: Navnet på den printerkø, der skal printes til. Når den mangler, sættes standardprinteren.
papirretning: Enten PORTRAIT (stående) eller LANDSCAPE (liggende). Når den mangler, efterlades feltet uændret med hensyn til printerindstillinger.
papirformat: Angiver papirformatet som en strengværdi, som kan være enten A3, A4, A5, LETTER, LEGAL eller TABLOID. Efterlades uændret, hvis manglende.
    oDoc.SetPrinter(Orientation := "PORTRAIT")
  
    doc.SetPrinter(paperformat='TABLOID')
  Retrieves a list of styles matching an optional compound criteria, the returned array may be empty. It applies to all document types except Base.
svc.Styles(family, opt namepattern: str, opt used: bool, opt userdefined: bool, opt parentstyle: str, opt category: str): str[0..*])
category: A case-insensitive string: TEXT, CHAPTER, LIST, INDEX, EXTRA, HTML. For their respective meanings, refer to paragraph style category API documentation.
This argument is ignored when the Family differs from "ParagraphStyles".
namepattern: A filter on the style names, as a case-sensitive string pattern. The names include the internal and localized names.
Admitted wildcard are:
the "?" representing any single character.
the "*" representing zero, one, or multiple characters
parentstyle: When present, only the children of the given, localized or not, parent style name are retained.
used: When True, the style must be used in the document, when absent the argument is ignored.
userdefined: When True, the style must have been added by the user, either in the document or its template, when absent, the argument is ignored.
    Dim vStyles As Variant
    vStyles = oDoc.Styles("ParagraphStyles") 'All styles in the family
    vStyles = oDoc.Styles("ParagraphStyles", "H*") 'Heading, Heading 1, ...
    vStyles = oDoc.Styles("ParagraphStyles", Used := False, UserDefined := True) ' All user-defined styles that are not used
    vStyles = oDoc.Styles("ParagraphStyles", ParentStyle := "Standard") ' All styles derived from the 'Default Paragraph Style'
  
    vStyles = doc.Styles('ParagraphStyles')  #All styles in the family
    vStyles = doc.Styles('ParagraphStyles', 'H*')  #Heading, Heading 1, ...
    vStyles = doc.Styles('ParagraphStyles', Used = False, UserDefined = True)  # All user-defined styles that are not used
    vStyles = doc.Styles('ParagraphStyles', ParentStyle = 'Standard")  # All styles derived from the "Default Paragraph Style"
  This method returns either a list of the available toolbar names in the actual document or an instance SFWidgets.Toolbar service.
    svc.Toolbars(opt ToolbarName: str): uno
    svc.Toolbars(): str[0..]
  
ToolbarName: The usual name of one of the available toolbars.
    Dim oToolbar As Object
    Set oToolbar = oDoc.Toolbars("myToolbar")
  
    a_list = doc.Toolbars()
  This method returns the UNO representation of a given style for all document types except Base. Nothing is returned when the StyleName does not exist in the given family.
svc.XStyles(family: str, stylename: str): uno
stylename: One of the styles present in the given family, as a case-sensitive string. The StyleName may be localized or not.
    Dim oStyle As Object
    Set oStyle = oDoc.XStyle("ParagraphStyle", "Heading 2")
  
    oStyle = doc.XStyle('ParagraphStyle', 'Heading 2')