Inhoud
Index 🔎︎

# SFDocuments.Calc service

De gedeelde bibliotheek SFDocuments biedt een aantal methoden en eigenschappen om het beheer en de verwerking van LibreOffice-documenten te vergemakkelijken.

De service SFDocuments.Calc is een subklasse van de service SFDocuments.Document. Alle methoden en eigenschappen die gedefinieerd zijn voor de service Document kunnen ook benaderd worden via een instantie van de service Calc.

De service Calc is gericht op:

- Werkbladen in een Calc-document verwerken (kopiëren, invoegen, verplaatsen, enz.)

- Gegevens uitwisselen tussen basisgegevensstructuren en Calc-bereiken

- Grote hoeveelheden gegevens kopiëren en importeren

Deze helppagina beschrijft methoden en eigenschappen die alleen van toepassing zijn op Calc-documenten.

## Service aanroep

De service Calc is nauw verwant aan de service UI van de ScriptForge-bibliotheek. Hieronder staan een paar voorbeelden van hoe de service Calc kan worden aangeroepen.

##### In BASIC

Het onderstaande codefragment maakt een service-instantie Calc die overeenkomt met het momenteel actieve Calc-document.

        Set oDoc = CreateScriptService("Calc")

Een andere manier om een instantie van de service Calc te maken, is door de service UI te gebruiken. In het volgende voorbeeld wordt een nieuw Calc-document gemaakt en is oDoc een Calc service-instantie:

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Calc")

Of gebruik de OpenDocument-methode van de UI-service:

        Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")

Het is ook mogelijk om de service Calc te instantiëren met behulp van de methodeCreateScriptService:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")

In het bovenstaande voorbeeld is "MyFile.ods" de naam van een geopend documentvenster. Als dit argument niet wordt opgegeven, wordt het actieve venster beschouwd.

Het wordt aanbevolen om na gebruik middelen vrij te maken:

        Set oDoc = oDoc.Dispose()

Als het document echter is gesloten met de methode CloseDocument, is het niet nodig om bronnen vrij te maken met het hierboven beschreven commando.

##### In Python

        myDoc = CreateScriptService("Calc")

        ui = CreateScriptService("UI")
        myDoc = ui.CreateDocument("Calc")

        myDoc = ui.OpenDocument(r"C:\Documents\MyFile.ods")

        myDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")
        myDoc.Dispose()

Het gebruik van het voorvoegsel "SFDocuments." tijdens het aanroepen van de service is optioneel.

## Definities

Veel methoden vereisen een "Blad" of een "Bereik" als argument. Enkele cellen worden beschouwd als een speciaal geval van een Bereik.

Beide kunnen worden uitgedrukt als een tekenreeks of als een referentie (= object), afhankelijk van de situatie:

- Binnen een specifiek Calc -instance worden werkbladen en bereiken gegeven als tekenreeksen zoals "Blad1" en "D2:F6".

- Bovendien retourneren de eigenschappen .Blad en .Bereik een verwijzing die kan worden gebruikt als argument van een methode die wordt aangeroepen vanuit een andere instantie van de Calc-service.

### Voorbeeld:

Het onderstaande voorbeeld kopieert gegevens van document A (geopend als alleen-lezen en verborgen) naar document B.

##### In BASIC

        Dim oDocA As Object, oDocB As Object
        Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.D4:F8"), "D2:F6") 'CopyToRange(source, target)

##### In Python

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.D4:F8"), "D2:F6")

### SheetName

Ofwel de bladnaam als een string of een object geproduceerd door de eigenschap .Sheet.

De sneltoets "~" (tilde) staat voor het huidige blad.

### RangeName

Ofwel een tekenreeks die een reeks aaneengesloten cellen aanduidt die zich in een blad van de huidige instantie bevinden, of een object geproduceerd door de eigenschap .Range.

De sneltoets "~" (tilde) staat voor de huidige selectie of het eerst geselecteerde bereik als er meerdere bereiken zijn geselecteerd.

De sneltoets "*" staat voor alle gebruikte cellen.

De bladnaam is optioneel in een bereik (standaard = het actieve blad). Omliggende enkele aanhalingstekens en $-tekens zijn toegestaan, maar worden genegeerd.

Met uitzondering van de eigenschap CurrentSelection, houdt de service Calc alleen rekening met enkele celbereiken.

Voorbeelden van geldige bereiken
1) '$BladX'.D2 2) $D$2 | Een enkele cel
1) '$BladX'.D2:F6 2) D2:D10 | Enkel bereik met meerdere cellen
'$BladX'.* | Alle gebruikte cellen in het gegeven blad
1) '$BladX'.A:A (kolom A) 2) 3:5 (rijen 3 tot 5) | Alle cellen in aaneengesloten kolommen of rijen tot aan de laatst gebruikte cel
mijnBereik | Een bereik met de naam "mijnBereik" op werkbladniveau
1) ~.eenBereik 2) BladX.eenBereik | Een bereiknaam op bladniveau
mijnDoc.Bereik("BladX.D2:F6") | Een bereik binnen het blad BladX in bestand dat is gekoppeld aan de Calc-instantie mijnDoc
~.~ of ~ | De huidige selectie in het actieve blad

## Eigenschappen

Alle eigenschappen die generiek zijn voor elk document, zijn impliciet ook van toepassing op Calc-documenten. Lees voor meer informatie de Documentservice Help-pagina.

De eigenschappen die specifiek beschikbaar zijn voor Calc-documenten zijn:

Naam | AlleenLezen | Argument | Retourtype: | Beschrijving
CurrentSelection | Nee | Geen | Tekenreeks of matrix van tekenreeksen | Het enkele geselecteerde bereik als een tekenreeks of de lijst met geselecteerde bereiken als een matrix.
FirstCell | Ja | Bladnaam of Bereiknaam als tekenreeks | String | Retourneert de eerste gebruikte cel in een bepaald bereik of blad.
FirstColumn | Ja | Bladnaam of bereiknaam als tekenreeks | Long | Retourneert het meest linkse kolomnummer in een bepaald bereik of blad.
FirstRow | Ja | Bladnaam of bereiknaam als tekenreeks | Long | Retourneert het bovenste rijnummer in een bepaald bereik of blad.
Height | Ja | Bereiknaam als tekenreeks | Long | Het aantal rijen (>=1) in het opgegeven bereik.
LastCell | Ja | Bladnaam of bereiknaam als tekenreeks | String | Retourneert de laatst gebruikte cel in een bepaald bereik of blad.
LastColumn | Ja | Bladnaam of bereiknaam als tekenreeks | Long | De laatst gebruikte kolom in een bepaald bereik of blad.
LastRow | Ja | Bladnaam of bereiknaam als tekenreeks | Long | De laatst gebruikte rij in een bepaald bereik of blad.
Range | Ja | Bereiknaam als tekenreeks | Object | Een bereikverwijzing die kan worden gebruikt als argument van methoden zoals CopyToRange.
Region | Ja | Bereiknaam als tekenreeks | String | Retourneert het adres van het kleinste gebied dat het opgegeven bereik bevat, zodat het gebied wordt omgeven door lege cellen of bladranden. Dit komt overeen met het toepassen van de Command + *Ctrl + * snelkoppeling naar het opgegeven bereik.
Sheet | Ja | Bladnaam als tekenreeks | Object | Een bladverwijzing die kan worden gebruikt als argument voor methoden zoals CopySheet.
Sheets | Ja | Geen | Matrix van tekenreeksen | De lijst met de namen van alle bestaande bladen.
Width | Ja | Bereiknaam als tekenreeks | Long | Het aantal kolommen (>=1) in het opgegeven bereik.
XCellRange | Ja | Bereiknaam als tekenreeks | Object | Een com.sun.star.Table.XCellRange UNO-object.
XSheetCellCursor | Ja | Bereiknaam als tekenreeks | Object | Een com.sun.star.sheet.XSheetCellCursor UNO-object. Na het verplaatsen van de cursor kan het resulterende bereikadres worden geopend via de UNO-eigenschap AbsoluteName van het cursorobject, dat een tekenreekswaarde retourneert die kan worden gebruikt als argument voor eigenschappen en methoden van de Calc-service.
XSpreadsheet | Ja | Bladnaam als tekenreeks | Object | Een com.sun.star.sheet.XSpreadsheet UNO-object.

Op de website LibreOffice API Documentation vind u meer informatie over de XCellRange, XSheetCellCursor en XSpreadsheet UNO-objecten.

## Methoden

Lijst met methoden in de Calc-service

A1Style
Activate
Charts
ClearAll
ClearFormats
ClearValues
CopySheet
CopySheetFromFile
CopyToCell
CopyToRange
CreateChart
DAvg
DCount
DMax

DMin
DSum
Forms
GetColumnName
GetFormula
GetValue
ImportFromCSVFile
ImportFromDatabase
InsertSheet
MoveRange
MoveSheet
Offset
OpenRangeSelector

PrintOut
Printf
RemoveSheet
RenameSheet
SetArray
SetValue
SetCellStyle
SetFormula
ShiftDown
ShiftLeft
ShiftRight
ShiftUp
SortRange

## A1Style

Retourneert een bereikadres als een tekenreeks op basis van bladcoördinaten, d.w.z. rij- en kolomnummers.

Als alleen een paar coördinaten wordt gegeven, wordt een adres naar een enkele cel geretourneerd. Aanvullende argumenten kunnen de cel rechtsonder van een rechthoekig bereik specificeren.

### Syntaxis:

svc.A1Style(row1: int, column1: int, row2: int = 0; column2: int = 0; sheetname: str = "~"): str

### Parameters:

rij1, kolom1: geef de rij- en kolomnummers op van de cel linksboven in het te beschouwen bereik. Rij- en kolomnummers beginnen bij 1.

rij2, kolom2: specificeer de rij- en kolomnummers van de cel rechtsonder in het te beschouwen bereik. Als deze argumenten niet worden opgegeven, of als waarden kleiner dan rij1 en kolom1 worden gegeven, dan wordt het adres van het enkele celbereik vertegenwoordigd door rij1 en kolom1 wordt geretourneerd.

bladnaam: de naam van het blad dat moet worden toegevoegd aan het geretourneerde bereikadres. Het blad moet bestaan. De standaardwaarde is "~" die overeenkomt met het huidige actieve blad.

### Voorbeeld:

De onderstaande voorbeelden in Basic en Python gaan ervan uit dat "Blad1" het momenteel actieve blad is.

##### In BASIC

        Set oDoc = CreateScriptService("Calc")
        addr1 = oDoc.A1Style(1, 1) ' '$Sheet1'.$A$1
        addr2 = oDoc.A1Style(2, 2, 3, 6) ' '$Sheet1'.$B$2:$F$3
        addr3 = oDoc.A1Style(2, 2, 0, 6) ' '$Sheet1'.$B$2
        addr4 = oDoc.A1Style(3, 4, 3, 8, "Sheet2") ' '$Sheet2'.$D$3:$H$3
        addr5 = oDoc.A1Style(5, 1, SheetName := "Sheet3") ' '$Sheet3'.$A$5

##### In Python

        doc = CreateScriptService("Calc")
        addr1 = doc.A1Style(1, 1) # '$Sheet1'.$A$1
        addr2 = doc.A1Style(2, 2, 3, 6) # '$Sheet1'.$B$2:$F$3
        addr3 = doc.A1Style(2, 2, 0, 6) # '$Sheet1'.$B$2
        addr4 = doc.A1Style(3, 4, 3, 8, "Sheet2") # '$Sheet2'.$D$3:$H$3
        addr5 = doc.A1Style(5, 1, sheetname="Sheet3") # '$Sheet3'.$A$5

De methode A1Style kan worden gecombineerd met een van de vele eigenschappen en methoden van de Calc-service die een bereik als argument vereisen, zoals GetValue, GetFormula, ClearAll, enz.

## Activate

Als het argument bladnaam wordt opgegeven, wordt het opgegeven blad geactiveerd en wordt het het momenteel geselecteerde blad. Als het argument ontbreekt, wordt het documentvenster geactiveerd.

### Syntaxis:

svc.Activate(sheetname: str = ""): bool

### Parameters:

bladnaam: de naam van het blad dat in het document moet worden geactiveerd. De standaardwaarde is een lege tekenreeks, wat betekent dat het documentvenster wordt geactiveerd zonder het actieve blad te wijzigen.

### Voorbeeld:

Het onderstaande voorbeeld activeert het blad met de naam "Blad4" in het huidige actieve document.

##### In BASIC

        Dim ui as Variant, oDoc as Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.GetDocument(ui.ActiveWindow)
        oDoc.Activate("Sheet4")

##### In Python

        ui = CreateScriptService("UI")
        myDoc = ui.GetDocument(ui.ActiveWindow)
        myDoc.Activate("Sheet4")

Het activeren van een werkblad heeft alleen zin als het wordt uitgevoerd op een Calc-document. Om er zeker van te zijn dat u een Calc-document bij de hand heeft, kunt u de eigenschap isCalc van het documentobject gebruiken, dat True retourneert als het een Calc-document is en anders False.

## Charts

Retourneert ofwel de lijst met de namen van alle grafiekobjecten in een bepaald blad of een enkele service-instantie Chart.

- Als alleen sheetname is opgegeven, wordt een op nul gebaseerde matrix van tekenreeksen met de namen van alle diagrammen geretourneerd.

- Als een chartname is opgegeven, wordt een enkel object dat overeenkomt met de gewenste kaart geretourneerd. Het opgegeven diagram moet bestaan.

### Syntaxis:

svc.Charts(sheetname: str, chartname: str = ""): obj

### Parameters:

bladnaam: De naam van het blad waaruit de lijst met grafieken moet worden opgehaald of waar de opgegeven grafiek zich bevindt.

kaartnaam: de door de gebruiker gedefinieerde naam van het kaartobject dat moet worden geretourneerd. Als de kaart geen door de gebruiker gedefinieerde naam heeft, kan de interne objectnaam worden gebruikt. Als dit argument ontbreekt, wordt de lijst met diagramnamen in het opgegeven blad geretourneerd.

Gebruik de zijbalk Navigator om de namen te controleren die zijn toegewezen aan kaarten onder de categorie OLE-objecten.

### Voorbeeld:

##### In BASIC

Het onderstaande voorbeeld toont het aantal grafiekobjecten in "Blad1".

        Dim arrNames as Object
        arrNames = oDoc.Charts("Sheet1")
        MsgBox "There are " & UBound(arrNames) + 1 & " charts in Sheet1"

Het volgende voorbeeld geeft toegang tot de grafiek met de naam "MyChart" in "Blad1" en drukt het type ervan af.

        Dim oChart as Object
        oChart = oDoc.Charts("Sheet1", "MyChart")
        MsgBox oChart.ChartType

##### In Python

        bas = CreateScriptService("Basic")
        chart_names = doc.Charts("Sheet1")
        bas.MsgBox(f"There are {len(chart_names)} charts in Sheet1")

        chart = doc.Charts("Sheet1", "MyChart")
        bas.MsgBox(chart.ChartType)

## ClearAll

Wist alle inhoud en formaten van het opgegeven bereik.

### Syntaxis:

svc.ClearAll(range: str)

### Parameters:

bereik: het bereik dat moet worden gewist, als een tekenreeks.

### Voorbeeld:

##### In BASIC

          oDoc.ClearAll("SheetX.A1:F10")

##### In Python

        myDoc.ClearAll("SheetX.A1:F10")

## ClearFormats

Wist de formaten en opmaakprofielen in het opgegeven bereik.

### Syntaxis:

svc.ClearFormats(range: str)

### Parameters:

bereik: het bereik waarvan de formaten en stijlen moeten worden gewist, als een tekenreeks.

### Voorbeeld:

##### In BASIC

          oDoc.ClearFormats("SheetX.*")

##### In Python

        myDoc.ClearFormats("SheetX.*")

## ClearValues

Wist de waarden en formules in het opgegeven bereik.

### Syntaxis:

svc.ClearValues(range: str)

### Parameters:

bereik: het bereik waarvan de waarden en formules moeten worden gewist, als een tekenreeks.

### Voorbeeld:

##### In BASIC

          oDoc.ClearValues("SheetX.A1:F10")

##### In Python

        myDoc.ClearValues("SheetX.A1:F10")

## CopySheet

Kopieert een opgegeven blad vóór een bestaand blad of aan het einde van de lijst met bladen. Het te kopiëren blad kan zich in elk open Calc-document bevinden. Retourneert True indien succesvol.

### Syntaxis:

svc.CopySheet(sheetname: any, newname: str, [beforesheet: any]): bool

### Parameters:

sheetname: de naam van het blad dat moet worden gekopieerd als een tekenreeks of de referentie ervan als een object.

newname: De naam van het blad dat moet worden ingevoegd. De naam mag niet in gebruik zijn in het document.

beforesheet: De naam (tekenreeks) of index (numeriek, beginnend bij 1) van het blad waarvoor het gekopieerde blad moet worden ingevoegd. Dit argument is optioneel en het standaardgedrag is om het gekopieerde blad op de laatste positie toe te voegen.

### Voorbeeld:

##### In BASIC

Het volgende voorbeeld maakt een kopie van het blad "BladX" en plaatst dit als het laatste blad in het huidige document. De naam van het gekopieerde blad is "BladY".

        Dim oDoc as Object
        'Haalt het Document-object van het actieve venster'
        Set oDoc = CreateScriptService("Calc")
        oDoc.CopySheet("SheetX", "SheetY")

Het onderstaande voorbeeld kopieert "BladX" van "File.ods" en plakt het op de laatste positie van "FileB.ods" met de naam "BladY":

          Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
          Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
          oDocB.CopySheet(oDocA.Sheet("SheetX"), "SheetY")

##### In Python

        myDoc.CopySheet("SheetX", "SheetY")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopySheet(docA.Sheet("SheetX"), "SheetY")

Om werkbladen tussen open documenten te kopiëren, gebruik CopySheet. Om werkbladen tussen gesloten documenten te kopiëren, gebruik CopySheetFromFile.

## CopySheetFromFile

Kopieert een gespecificeerd blad van een gesloten Calc-document en plakt het voor een bestaand blad of aan het einde van de lijst met bladen van het bestand waarnaar wordt verwezen door een Document-object.

Als het bestand niet bestaat, wordt er een fout gegenereerd. Als het bestand geen geldig Calc-bestand is, wordt een leeg blad ingevoegd. Als het bronblad niet bestaat in het invoerbestand, wordt een foutmelding bovenaan het nieuw geplakte blad ingevoegd.

### Syntaxis:

svc.CopySheetFromFile(filename: str, sheetname: str, newname: str, [beforesheet: any]): bool

### Parameters:

bestandsnaam: identificeert het te openen bestand. Het moet de notatie SF_FileSystem.FileNaming volgen. Het bestand mag niet worden beveiligd met een wachtwoord.

sheetname: De naam van het blad dat als tekenreeks moet worden gekopieerd.

newname: De naam van het gekopieerde blad dat in het document moet worden ingevoegd. De naam mag niet in gebruik zijn in het document.

beforesheet: De naam (tekenreeks) of index (numeriek, beginnend bij 1) van het blad waarvoor het gekopieerde blad moet worden ingevoegd. Dit argument is optioneel en het standaardgedrag is om het gekopieerde blad op de laatste positie toe te voegen.

### Voorbeeld:

Het volgende voorbeeld kopieert "BladX" van "myFile.ods" en plakt het op de eerste positie in het document waarnaar wordt verwezen door "oDoc" als "BladY".

##### In BASIC

        oDoc.CopySheetFromFile("C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

##### In Python

        myDoc.CopySheetFromFile(r"C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

## CopyToCell

Kopieert een opgegeven bronbereik (waarden, formules en indelingen) naar een doelbereik of cel. De methode reproduceert het gedrag van een kopieer-/plakbewerking van een bereik naar een enkele cel.

Het retourneert een tekenreeks die het gewijzigde celbereik vertegenwoordigt. De grootte van het gewijzigde gebied wordt volledig bepaald door de grootte van het brongebied.

Het bronbereik kan bij een ander geopend document horen.

### Syntaxis:

svc.CopyToCell(sourcerange: any, destinationcell: str): str

### Parameters:

sourcerange: Het bronbereik als tekenreeks als het bij hetzelfde document hoort of als verwijzing als het bij een ander geopend Calc-document hoort.

destinationcell: De doelcel waar het gekopieerde celbereik wordt geplakt, als een tekenreeks. Als een bereik is opgegeven, wordt alleen de cel linksboven in aanmerking genomen.

### Voorbeeld:

##### In BASIC

Hierna volgt een voorbeeld waarbij de bron en het doel zich in hetzelfde bestand bevinden:

          oDoc.CopyToCell("SheetX.A1:F10", "SheetY.C5")

Het onderstaande voorbeeld illustreert hoe u een bereik kopieert uit een ander geopend Calc-document:

        Dim ui as Variant : ui = CreateScriptService("UI")
        Dim oDocSource As Object, oDocDestination As Object
        'Open het brondocument op de achtergrond (verborgen)
        Set oDocSource = ui.OpenDocument("C:\SourceFile.ods", Hidden := True, ReadOnly := True)
        Set oDocDestination = CreateScriptService("Calc")
        oDocDestination.CopyToCell(oDocSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        'Vergeet niet het brondocument te sluiten, omdat het als verborgen werd geopend
        oDocSource.CloseDocument()

##### In Python

        docSource = ui.OpenDocument(r"C:\Documents\SourceFile.ods", hidden = True, readonly = True)
        docDestination = CreateScriptService("Calc")
        docDestination.CopyToCell(docSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        docSource.CloseDocument()

Gebruik CopyToCell om kopiëren/plakken van een bereik naar een enkele cel te simuleren. Gebruik CopyToRange om kopiëren/plakken van een bereik naar een groter bereik te simuleren (waarbij dezelfde cellen meerdere keren worden gerepliceerd).

## CopyToRange

Kopieert naar beneden en/of naar rechts een gespecificeerd bronbereik (waarden, formules en formaten) naar een doelbereik. De methode imiteert het gedrag van een kopieer-/plakbewerking van een bronbereik naar een groter doelbereik.

- Als de hoogte (of breedte) van het doelgebied > 1 rij (of kolom) is, dan moet de hoogte (of breedte) van de bron <= de hoogte (of breedte) van de bestemming zijn. Anders gebeurt er niets.

- Als de hoogte (of breedte) van de bestemming = 1 is, wordt de bestemming naar beneden (of naar rechts) uitgebreid tot de hoogte (of breedte) van het bronbereik.

De methode retourneert een tekenreeks die het gewijzigde celbereik vertegenwoordigt.

Het bronbereik kan bij een ander geopend document horen.

### Syntaxis:

svc.CopyToRange(sourcerange: any, destinationrange: str): str

### Parameters:

sourcerange: Het bronbereik als tekenreeks als het bij hetzelfde document hoort of als verwijzing als het bij een ander geopend Calc-document hoort.

destinationrange: De bestemming van het gekopieerde celbereik, als een tekenreeks.

### Voorbeeld:

##### In BASIC

Kopieer binnen hetzelfde document:

        oDoc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
        ' Retourneert een bereiktekenreeks: "$SheetY.$C$5:$J$14"

Kopieer van het ene bestand naar het andere:

        Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

##### In Python

        doc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

## CreateChart

Maakt een nieuw grafiekobject met de gegevens in het opgegeven bereik. Het geretourneerde kaartobject kan verder worden gemanipuleerd met behulp van de service Chart.

### Syntaxis:

svc.CreateChart(chartname: str, sheetname: str, range: str, columnheader: bool = False, rowheader: bool = False): obj

### Parameters:

chartname: De door de gebruiker gedefinieerde naam van de te maken grafiek. De naam moet uniek zijn in hetzelfde blad.

sheetname: De naam van het blad waar de grafiek zal worden geplaatst.

range: Het bereik dat als gegevensbron voor de grafiek moet worden gebruikt. Het bereik kan verwijzen naar elk blad van het Calc-document.

columnheader: Als True, zal de bovenste rij van het bereik worden gebruikt als labels voor de categorie-as of de legenda (Standaard = False).

rowheader: Als True, zal de meest linkse kolom van het bereik worden gebruikt als labels voor de categorie-as of de legenda. (Standaard = False).

### Voorbeeld:

In de onderstaande voorbeelden wordt in Basic en in Python een diagram aangemaakt met de gegevens die in de cellen "A1:B5" van "Sheet1" staan, de diagram wordt in "Sheet2" gezet.

##### In BASIC

        Set oChart = oDoc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", RowHeader := True)
        oChart.ChartType = "Donut"

##### In Python

        chart = doc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", rowheader=True)
        chart.ChartType = "Donut"

Lees de helppagina over de ScriptForge service Chart voor meer informatie over de mogelijkheden met diagram-objecten .U kunt het diagramtype wijzigen, de diagram, de assen, de titels en de positie.

## DAvg, DCount, DMax, DMin and DSum

De functies Average, Count, Max, Min en Sum kunnen gebruikt worden voor alle cellen die een numerieke waarde bevatten binnen een aangegeven bereik.

### Syntaxis:

svc.DAvg(range: str): float

svc.DCount(range: str): float

svc.DMax(range: str): float

svc.DMin(range: str): float

svc.DSum(range: str): float

### Parameters:

range: Een tekenreeks, die het bereik van de cellen aangeeft waarop de functie werkt.

### Voorbeeld:

In onderstaand voorbeeld wordt de functie Som uitgevoerd op het bereik "A1:A1000" van het geselecteerde werkblad:

##### In BASIC

          result = oDoc.DSum("~.A1:A1000")

##### In Python

        result = myDoc.DSum("~.A1:A1000")

Cellen in het aangegeven bereik die tekst bevatten worden door deze functies overgeslagen. De methode DCount zal alleen cellen met numerieke inhoud tellen en de cellen met tekst overslaan.

## Forms

Afhankelijk van de parameters retourneert deze methode:

- Een zero-based matrix (of een tuple in Python) met de namen van alle forms die een aangegeven werkblad bevat (indien er bij de aanroep geen argument form is)

- Een instantie van de service SFDocuments.Form die staat voor het form als dat als argument wordt gebruikt.

### Syntaxis:

svc.Forms(sheetname: str): str[0..*]

svc.Forms(sheetname: str, form: str = ''): svc

svc.Forms(sheetname: str, form: int): svc

### Parameters:

sheetname: De naam van het werkblad, als een tekenreeks, waar het form van wordt opgehaald.

form: De naam of index van een form op een aangegeven werkblad. Indien het argument ontbreekt zal de methode een lijst met alle beschikbare forms op het werkblad retourneren.

### Voorbeeld:

In de volgende voorbeelden wordt met de eerste regel steeds de namen van alle forms op het werkblad "Sheet1" opgehaald, in de volgende regel wordt het object Form van het form "Form_A" opgehaald. "Form_A" is de naam van een form op werkblad "Sheet1".

##### In BASIC

        Set FormNames = oDoc.Forms("Sheet1")
        Set FormA = oDoc.Forms("Sheet1", "Form_A")

##### In Python

        form_names = doc.Forms("Sheet1")
        form_A = doc.Forms("Sheet1", "Form_A")

## GetColumnName

Converteert een kolomnummer in het bereik 1-1024 naar de overeenkomende letter (kolom 'A', 'B', ..., 'AMJ'). Als het kolomnummer buiten het bereik ligt, dan wordt er een lege tekenreeks geretourneerd.

### Syntaxis:

svc.GetColumnName(columnnumber: int): str

### Parameters:

columnnumber: Het kolomnummer als een geheel getal in het bereik 1 ... 1024.

### Voorbeeld:

##### In BASIC

Toont een berichtvenster met de naam van de derde kolom, standaard is dat "C".

        MsgBox oDoc.GetColumnName(3)

##### In Python

        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.GetColumnName(3))

Het maximale aantal kolommen in een Calc-werkblad is 1024.

## GetFormula

Haalt de formule(s) op in het aangegeven bereik van cellen als een enkele tekenreeks, een 1D of een 2D matrix van tekenreeksen.

### Syntaxis:

svc.GetFormula(range: str): any

### Parameters:

range: Het bereik van cellen waar de formules van opgehaald moeten worden.

### Voorbeeld:

##### In BASIC

In dit voorbeeld wordt een 3 bij 2 matrix geretourneerd, omdat in het bereik "A1:B3" 3 rijen (cijfers) en 2 kolommen (letters) zitten:

        arrFormula = oDoc.GetFormula("~.A1:B3")

##### In Python

        arrFormula = myDoc.GetFormula("~.A1:B3")

## GetValue

Haalt de waarde(n) in het gegeven bereik op als een enkele waarde, een 1D matrix of een 2D matrix. Elke waarde is een ''double' of een 'string'.

### Syntaxis:

svc.GetValue(range: str): any

### Parameters:

range: Het bereik waar de waarden van opgehaald moet worden, als een tekenreeks.

### Voorbeeld:

##### In BASIC

          arrValues = oDoc.GetValue("~.B1:C100")

##### In Python

        arrValues = myDoc.GetValue("~.B1:C100")

Als een cel een datum bevat, wordt het getal dat daarmee overeenkomt geretourneerd. Om in een Basic-script een getal te converteren naar een datum, gebruik de Basic functie CDate. In Python-scripts, gebruik de functie CDate van de service Basic.

## ImportFromCSVFile

Importeert de inhoud van een CSV-bestand en plaatst het in een aangegeven cel.

De inhoud en opmaak van deze aangegeven cel wordt hierbij gewist. De grootte van de cel is afhankelijk van de inhoud van het invoerbestand.

Deze methode retourneert een tekenreeks die staat voor het bereik van de gewijzigde cellen.

### Syntaxis:

svc.ImportFromCSVFile(filename: str, destinationcell: str, [filteroptions: str]): str

### Parameters:

filename: Geeft het te openen bestand aan. De notatie moet voldoen aan de normen van SF_FileSystem.FileNaming.

destinationcell: De cel waarin de inhoud van het bestand als een tekenreeks wordt geplaatst. Als hier een bereik wordt opgegeven, dan is de cel die gebruikt wordt, de cel linksboven in het bereik.

filteroptions: De argumenten voor het CSV-invoerfilter. Bij het standaardfilter worden de volgende aannames gedaan:

- De codering van het invoerbestand is UTF8.

- Het scheidingsteken is een komma, puntkomma of een Tab.

- Een tekenreeks staat tussen dubbele aanhalingstekens (").

- Alle regels worden meegenomen.

- Tekenreeksen worden geformatteerd als een tekst.

- Speciale getallen worden herkend.

- Van alle kolommen wordt aangenomen dat het een tekst is, behalve als het herkend wordt als een geldig getal.

- De taal is Engels/VS, dit betekent dat een punt het decimaal scheidingsteken is en een komma het scheidingsteken bij duizendtallen.

### Voorbeeld:

##### In BASIC

        oDoc.ImportFromCSVFile("C:\Temp\myCSVFile.csv", "SheetY.C5")

##### In Python

        myDoc.ImportFromCSVFile(r"C:\Temp\myCSVFile.csv", "SheetY.C5")

Lees de Wiki voor een uitleg over de opties van het CSV-filter.

## ImportFromDatabase

Importeert de inhoud dan een database-tabel, query of het resultaat van een SQL-commando, bijvoorbeeld een SELECT, dat in de cel 'destination' wordt geplaatst.

Het bereik van cellen waar het resultaat wordt geplaatst wordt eerst geleegd wat de inhoud en de opmaak betreft. Het aantal cellen dat hierbij gebruikt wordt is volledig afhankelijk van de inhoud van de tabel of de query.

De methode retourneert True wanneer het importeren lukt.

### Syntaxis:

svc.ImportFromDatabase(filename: str = "", registrationname: str = "", destinationcell: str = "", sqlcommand: str = "", directsql: bool): bool

### Parameters:

filename: Geeft het te openen bestand aan. De notatie moet voldoen aan de normen van SF_FileSystem.FileNaming.

registrationname: De naam die gebruikt moet worden om de database te vinden in het databases register. Dit argument wordt genegeerd als er een filename wordt meegegeven.

destinationcell: De bestemming van de geïmporteerde gegevens. Als er een bereik wordt opgegeven, dan wordt alleen de cel linksboven gebruikt.

sqlcommand: Een tabelnaam , een query-naam (zonder de omringende aanhalingstekens of vierkante haken) of een SELECT SQL-statement (waarbij de tabelnaam en de veldnamen omringt mogen worden met aanhalingstekens of vierkante haken, dit om de leesbaarheid te verbeteren).

directsql: Indien True, het SQL-commando wordt direct naar de database engine gestuurd zonder eerst geanalyseerd te worden. De standaardwaarde is False. Het argument wordt bij tabellen genegeerd. Bij queries, de gebruikte optie is de optie die gebruikt is bij de definitie van de query.

### Voorbeeld:

##### In BASIC

        oDoc.ImportFromDatabase("C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

##### In Python

        myDoc.ImportFromDatabase(r"C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

## InsertSheet

Voegt een leeg tabblad toe voor een bestaand tabblad of aan het eind.

### Syntaxis:

svc.InsertSheet(sheetname: str, [beforesheet: any]): bool

### Parameters:

sheetname: De naam van het nieuwe tabblad.

beforesheet: De naam (tekenreeks) of index (numeriek, beginnend met 1) van het tabblad waar het nieuwe tabblad voor moet worden toegevoegd. Dit argument is optioneel, standaard wordt een nieuw tabblad achteraan toegevoegd.

### Voorbeeld:

In dit voorbeeld wordt een tabblad "SheetX" toegevoegd voor tabblad "SheetY":

##### In BASIC

        oDoc.InsertSheet("SheetX", "SheetY")

##### In Python

        myDoc.InsertSheet("SheetX", "SheetY")

## MoveRange

Verplaatst een aangegeven bronbereik naar bestemmingsbereik van cellen. De methode retourneert een tekenreeks die het gewijzigde bereik van cellen aangeeft. De omvang van het gewijzigde gebied wordt volledig bepaald door de grootte van het bronbereik.

### Syntaxis:

svc.MoveRange(source: str, destination: str): str

### Parameters:

source: Het bronbereik van de cellen, als een tekenreeks.

destination: De cel waar de gegevens in worden gezet, als een tekenreeks. Als hier een bereik wordt opgegeven, dan is de cel die gebruikt wordt, de cel linksboven in het bereik.

### Voorbeeld:

##### In BASIC

        oDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

##### In Python

        myDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

## MoveSheet

Verplaatst een bestaand tabblad en plaatst het voor een aangegeven tabblad of aan het eind.

### Syntaxis:

svc.MoveSheet(sheetname: str, [beforesheet: any]): bool

### Parameters:

sheetname: De naam van het te verplaatsen tabblad. Het tabblad moet bestaan.

beforesheet: De naam (tekenreeks) of index (numeriek, beginnen met 1) van het tabblad waar het originele tabblad voor moet worden geplaatst. Dit argument is optioneel, standaard wordt het tabblad achteraan geplaatst.

### Voorbeeld:

Dit voorbeeld verplaatst het tabblad "SheetX" naar de plek voor tabblad "SheetY":

##### In BASIC

        oDoc.MoveSheet("SheetX", "SheetY")

##### In Python

        myDoc.MoveSheet("SheetX", "SheetY")

## Offset

Retourneert een nieuw bereik (als een tekenreeks) offset bij een bepaald aantal rijen en kolommen van een gegeven bereik.

Deze methode is gelijkwaardig aan de Calc-functie Offset.

### Syntaxis:

svc.Offset(reference: str, rows: int = 0, columns: int = 0, [height: int], [width: int]): str

### Parameters:

reference: Het bereik, als een tekenreeks, dat de methode zal gebruiken als referentie voor het uitvoeren van de instructie offset.

rows: Het aantal rijen waar het initiële bereik is offset naar boven (negatieve waarde) of naar beneden (positieve waarde). Gebruik 0 (standaard) om in dezelfde rij te blijven.

columns: Het aantal kolommen waar het initiële bereik is offset naar links (negatieve waarde) of naar rechts (positieve waarde). Gebruik 0 (standaard) om in dezelfde kolom te blijven.

height: De verticale hoogte voor een gebied dat begint op de positie van het nieuwe bereik. Laat dit argument weg als er geen verticale aanpassing nodig is.

width: De horizontale breedte voor een gebied dat begint op de positie van het nieuwe bereik. Laat dit argument weg als er geen horizontale aanpassing nodig is.

Argumenten rows en columns moeten niet betekenen dat de startrij of startkolom kleiner wordt dan 1.

Argumenten height en width moeten niet betekenen dat het aantal kolommen of rijen lager wordt dan 1.

### Voorbeeld:

##### In BASIC

        oDoc.Offset("A1", 2, 2)
        'SheetX.$C$3 (A1 twee rijen naar rechts en twee kolommen naar beneden verplaatst)
        oDoc.Offset("A1", 2, 2, 5, 6)
        'SheetX.$C$3:$H$7 (A1 offset van 2 rijen en kolommen en met een breedte van 5 rijen en 5 kolommen)

##### In Python

        myDoc.Offset("A1", 2, 2)
        myDoc.Offset("A1", 2, 2, 5, 6)

## OpenRangeSelector

Opent een 'non-modal' dialoogvenster dat gebruikt kan worden om een bereik in het document te selecteren, het retourneert een tekenreeks met het geselecteerde bereik.

Deze methode opent hetzelfde dialoogvenster dat gebruikt wordt door LibreOffice wanneer de knop Verkleinen wordt ingedrukt. Het dialoogvenster Extra - Doel zoeken heeft bijvoorbeeld die knop rechts naast het veld Formulecel.

Deze methode wijzigt de huidige selectie niet.

### Syntaxis:

svc.OpenRangeSelector(opt title: str, opt selection: str, singlecell: bool = False, closeafterselect: bool = True): str

### Parameters:

title: De titel van het dialoogvenster, als een tekenreeks.

selection: Een optioneel bereik dat al is geselecteerd bij het tonen van het dialoogvenster.

singlecell: Bij True (standaard) is alleen selectie van één cel toegestaan.Bij False is selectie van een bereik toegestaan.

closeafterselect: Bij True (standaard) wordt het dialoogvenster direct gesloten nadat de selectie is gemaakt. Bij False kan de gebruiker de selectie een aantal keer heroverwegen en na selectie zelf het dialoogvenster sluiten.

### Voorbeeld:

##### In BASIC

        Dim sRange as String
        sRange = oDoc.OpenRangeSelector(Title := "Select a range")

##### In Python

        sRange = myDoc.OpenRangeSelector(title = "Select a range")

## Printf

Retourneert de invoertekenreeks na het vervangen van de tokens door de waarden in een aangegeven bereik.

Deze methode wijzigt de huidige selectie niet.

Deze methode kan gebruikt worden om snel een specifiek delen van een bereiknaam te bepalen, zoals de bladnaam, of de eerste kolom en rij en die gebruiken om een nieuw bereik samen te stellen.

### Syntaxis:

svc.Printf(inputstr: str, range: str, tokencharacter: str = "%"): str

### Parameters:

inputstr: De tekenreeks met de tokens die vervangen zullen worden door de overeenkomende waarden in het bereik.

range: Een BereikNaam waar de waarden uit worden gehaald. Als het een bladnaam bevat, dan moet dat blad bestaan.

tokencharacter: Teken dat gebruikt wordt om aan te geven dat het een token is. Standaard is dat het teken "%". De volgende tokens worden geaccepteerd:

- %S - De bladnaam met het bereik, inclusief enkele aanhalingstekens als die nodig zijn.

- %R1 - Het nummer van de rij van de cel linksboven van het bereik.

- %C1 - De letter van de kolom van de cel linksboven van het bereik.

- %R2 - Het nummer van de rij van de cel rechtsonder van het bereik.

- %C2 - De letter van de kolom van de cel rechtsonder van het bereik.

### Voorbeeld:

##### In BASIC

In dit voorbeeld wordt elk element in de BereikNaam gedefinieerd in sRange opgehaald, en gebruikt om een bericht op te stellen.

        Dim sRange as String, sInputStr as String
        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S" & Chr(10) & _
                    "First row: %R1" & Chr(10) & _
                    "First column %C1" & Chr(10) & _
                    "Last row %R2" & Chr(10) & _
                    "Last column %C2"
        MsgBox oDoc.Printf(sInputStr, sRange)

De methode Printf kan samen met SetFormula worden gebruikt om formules over meerdere cellen aan te maken. Stel, er is een tabel met numerieke waarden in het bereik "A1:E10" waarvoor formules moeten worden gemaakt om de waarden per rij op te tellen en het resultaat te plaatsen in de cellen "F1:F10":

        Dim sFormula as String, sRange as String
        sRange = "A1:E10"
        ' Let op het gebruik van het teken "$"
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        oDoc.SetFormula("F1:F10", oDoc.Printf(sFormula, sRange))

##### In Python

        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S\n" \
                    "First row: %R1\n" \
                    "First column %C1\n" \
                    "Last row %R2\n" \
                    "Last column %C2"
        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.Printf(sInputStr, sRange))

        sRange = "A1:E10
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        myDoc.SetFormula("F1:F10", myDoc.Printf(sFormula, sRange))

## PrintOut

Deze methode stuurt de inhoud van het aangegeven blad door naar de standaardprinter of de printer die is aangegeven met de methode SetPrinter van de service Document.

Retourneert True als het blad is afgedrukt.

### Syntaxis:

svc.PrintOut(opt sheetname: str, pages: str = "", copies: num = 1): bool

### Parameters:

sheetname: Het blad dat afgedrukt moet worden, standaard het actieve blad.

pages: De af te drukken pagina's als een tekenreeks. Voorbeeld: "1-4;10;15-18". Standaard is alle pagina's.

copies: Het aantal afdrukken. Standaard is 1.

### Voorbeeld:

##### In BASIC

        If oDoc.PrintOut("SheetX", "1-4;10;15-18", Copies := 2) Then
            ' ...
        End If

##### In Python

        if doc.PrintOut('SheetX', copies=3, pages='45-88'):
            # ...

## RemoveSheet

Verwijdert een bestaand blad uit het document.

### Syntaxis:

svc.RemoveSheet(sheetname: str): bool

### Parameters:

sheetname: De naam van het te verwijderen blad.

### Voorbeeld:

##### In BASIC

        oDoc.RemoveSheet("SheetY")

##### In Python

        myDoc.RemoveSheet("SheetY")

## RenameSheet

Wijzigt de naam van een gegeven blad en retourneert True als de naamswijziging lukt.

### Syntaxis:

svc.RenameSheet(sheetname: str, newname: str): bool

### Parameters:

sheetname: De naam van het blad dat een andere naam moet krijgen.

newname: De nieuwe naam van het blad. Er mag geen blad zijn met die naam.

### Voorbeeld:

In dit voorbeeld wordt de naam het actieve blad gewijzigd in "SheetY":

##### In BASIC

        oDoc.RenameSheet("~", "SheetY")

##### In Python

        mydoc.RenameSheet("~", "SheetY")

## SetArray

Slaat de gegeven waarde op vanaf een gespecificeerde doelcel. Het bijgewerkte gebied breidt zichzelf uit vanuit de doelcel of vanuit de linkerbovenhoek van het opgegeven bereik om plaats te bieden aan de grootte van het invoerargument value. Vectoren worden altijd verticaal uitgevouwen.

De methode retourneert een tekenreeks die het gewijzigde gebied weergeeft als een celbereik.

### Syntaxis:

svc.SetArray(targetcell: str, value: any): str

### Parameters:

targetcell: De cel of een bereik als een tekenreeks van waaruit de opgegeven waarde moet worden opgeslagen.

value: Een scalair, een vector of een matrix (in Python, een- of tweedimensionale lijsten en tupels) met de nieuwe waarden die moeten worden opgeslagen vanuit de doelcel of vanuit de linkerbovenhoek van het bereik als targetcell is een bereik. De nieuwe waarden moeten strings, numerieke waarden of datums zijn. Andere typen zorgen ervoor dat de bijbehorende cellen worden geleegd.

### Voorbeeld:

##### In BASIC

Het volgende voorbeeld gebruikt de ingebouwde functie DimArray om een matrix te maken en deze vervolgens op te slaan in cel "A1":

        Dim arrData as Variant
        arrData = DimArray(2, 1)
        arrData(0, 0) = 1 : arrData(1, 0) = 2 : arrData(2, 0) = 3
        arrData(0, 1) = "One" : arrData(1, 1) = "Two" : arrData(2, 1) = "Three"
        oDoc.SetArray("Sheet1.A1", arrData)

Dit voorbeeld gebruikt de RangeInit-methode van de ScriptForge Array-service om een matrix met waarden die vervolgens worden opgeslagen vanaf cel "A1" en naar beneden.

        'Vul 1e kolom met waarden van 1 tot 1000
        oDoc.SetArray("Sheet1.A1", SF_Array.RangeInit(1, 1000))

##### In Python

        arrData = ((1, "One"), (2, "Two"), (3, "Three"))
        myDoc.SetArray("Sheet1.A1", arrData)

        myDoc.SetArray("Sheet1.A1", tuple(i + 1 for i in range(1000)))

Gebruik SetArray om de volledige inhoud van een matrix in een blad te dumpen. Gebruik SetValue om de inhoud van een matrix alleen binnen de grenzen van het beoogde celbereik te dumpen.

## SetValue

Slaat de gegeven waarde op in het opgegeven bereik. De grootte van het gewijzigde gebied is gelijk aan de grootte van het doelbereik.

De methode retourneert een tekenreeks die het gewijzigde gebied weergeeft als een celbereik.

### Syntaxis:

svc.SetValue(targetrange: str, value: any): str

### Parameters:

targetrange: Het bereik waar de gegeven waarde moet worden opgeslagen, als een tekenreeks.

value: Een scalair, een vector of een matrix met de nieuwe waarden voor elke cel van het bereik. De nieuwe waarden moeten tekenreeksen, numerieke waarden of datums zijn. Andere typen zorgen ervoor dat de bijbehorende cellen worden geleegd.

Het volledige assortiment wordt bijgewerkt en de rest van het blad blijft ongewijzigd. Als de grootte van value kleiner is dan de grootte van targetrange, worden de resterende cellen geleegd.

Als de grootte van value groter is dan de grootte van targetrange, dan wordt value slechts gedeeltelijk gekopieerd totdat het de grootte van targetrange vult.

Vectoren worden verticaal uitgevouwen, behalve als targetrange een hoogte heeft van exact 1 rij.

### Voorbeeld:

##### In BASIC

        oDoc.SetValue("A1", 2)
        'De matrix Value-array is kleiner dan de TargetRange (resterende cellen worden leeggemaakt)
        oDoc.SetValue("A1:F1", Array(1, 2, 3))
        'Below the Value en TargetRange hebben dezelfde grootte
        oDoc.SetValue("A1:D2", SF_Array.AppendRow(Array(1, 2, 3, 4), Array(5, 6, 7, 8)))

Als u een enkele rij met waarden wilt vullen, kunt u de functie Offset gebruiken. Houd er in het onderstaande voorbeeld rekening mee dat arrData een eendimensionale matrix is:

        Dim firstCell As String : firstCell = "A1"
        Dim lenArray As Integer : lenArray = UBound(arrData) - LBound(arrData) + 1
        Dim newRange As String : newRange = oDoc.Offset(firstCell, width = lenArray)
        oDoc.SetValue(newRange, arrData)

##### In Python

        myDoc.SetValue("A1", 2)
        myDoc.SetValue("A1:F1", (1, 2, 3))
        myDoc.SetValue("A1:D2", ((1, 2, 3, 4), (5, 6, 7, 8)))

        firstCell = "A1"
        newRange = doc.Offset(firstCell, width = len(arrData))
        doc.SetValue(newRange, arrData)

## SetCellStyle

Past de opgegeven celstijl toe op het opgegeven doelbereik. Het volledige assortiment wordt bijgewerkt en de rest van het blad blijft onaangeroerd. Als de celstijl niet bestaat, wordt er een fout gegenereerd.

De methode retourneert een tekenreeks die het gewijzigde gebied weergeeft als een celbereik.

### Syntaxis:

svc.SetCellStyle(targetrange: str, style: str): str

### Parameters:

targetrange: Het bereik waarop de stijl wordt toegepast, als een tekenreeks.

style: De naam van de celstijl die moet worden toegepast.

### Voorbeeld:

##### In BASIC

        oDoc.SetCellStyle("A1:J1", "Heading 1")
        oDoc.SetCellStyle("A2:J100", "Neutral")

##### In Python

        myDoc.SetCellStyle("A1:J1", "Heading 1")
        myDoc.SetCellStyle("A2:J100", "Neutral")

## SetFormula

Voegt de gegeven (matrix van) formule(s) in het opgegeven bereik in. De grootte van het gewijzigde gebied is gelijk aan de grootte van het bereik.

De methode retourneert een tekenreeks die het gewijzigde gebied weergeeft als een celbereik.

### Syntaxis:

svc.SetFormula(targetrange: str, formula: any): str

### Parameters:

targetrange: Het bereik om de formules in te voegen, als een tekenreeks.

formula: Een tekenreeks, een vector of een matrix van tekenreeksen met de nieuwe formules voor elke cel in het doelbereik.

Het volledige bereik wordt bijgewerkt en de rest van het blad blijft ongewijzigd.

Als de gegeven formule een tekenreeks is, wordt de unieke formule over het hele bereik geplakt met aanpassing van de relatieve referenties.

Als de grootte van formula kleiner is dan de grootte van targetrange, worden de resterende cellen geleegd.

Als de grootte van formula groter is dan de grootte van targetrange, dan worden de formules slechts gedeeltelijk gekopieerd totdat het de grootte van targetrange vult.

Vectoren worden altijd verticaal uitgevouwen, behalve als targetrange een hoogte heeft van exact 1 rij.

### Voorbeeld:

##### In BASIC

        oDoc.SetFormula("A1", "=A2")
        'Horizontale vector, gedeeltelijk leeg
        oDoc.SetFormula("A1:F1", Array("=A2", "=B2", "=C2+10"))
        'D2 bevat de formule "=H2"
        oDoc.SetFormula("A1:D2", "=E1")

##### In Python

        myDoc.SetFormula("A1", "=A2")
        myDoc.SetFormula("A1:F1", ("=A2", "=B2", "=C2+10"))
        myDoc.SetFormula("A1:D2", "=E1")

## ShiftDown

Verplaatst een bepaald cellenbereik naar beneden door lege rijen in te voegen. De huidige selectie wordt niet beïnvloed.

Afhankelijk van de waarde van het argument wholerows kunnen de ingevoegde rijen de breedte van het opgegeven bereik beslaan of alle kolommen in de rij beslaan.

Deze methode retourneert een tekenreeks die de nieuwe locatie van het initiële bereik vertegenwoordigt.

Als het verschoven bereik de bladranden overschrijdt, gebeurt er niets.

### Syntaxis:

svc.ShiftDown(range: str, wholerow: bool = False, opt rows: int): str

### Parameters:

range: Het bereik waarboven rijen worden ingevoegd, als een tekenreeks.

wholerowj: indien ingesteld op False (standaard), dan is de breedte van de ingevoegde rijen hetzelfde als de breedte van het opgegeven range. Anders beslaat de ingevoegde rij alle kolommen in het blad.

rows: Het aantal in te voegen rijen. De standaardwaarde is de hoogte van het oorspronkelijke range. Het aantal rijen moet een positief getal zijn.

### Voorbeeld:

##### In BASIC

        ' Verplaatst het bereik "A3:D3" één rij omlaag; beïnvloedt alleen de kolommen A tot D
        oDoc.ShiftDown("A3:D3")
        ' De ingevoegde rij beslaat alle kolommen in het blad
        oDoc.ShiftDown("A3:D3", WholeRow := True)
        ' Verplaatst het bereik "A3:D3" vijf rijen naar beneden
        oDoc.ShiftDown("A3:D3", Rows := 5)
        ' Verplaatst het bereik "A3:D10" twee rijen naar beneden en toont de nieuwe locatie van het oorspronkelijke bereik
        Dim sNewRange as String
        sNewRange = oDoc.ShiftDown("A3:D10", Rows := 2)
        MsgBox sNewRange   ' $Sheet1.$A$5:$D$12

##### In Python

        myDoc.ShiftDown("A3:D3")
        myDoc.ShiftDown("A3:D3", wholerow = True)
        myDoc.ShiftDown("A3:D3", rows = 5)
        sNewRange = myDoc.ShiftDown("A3:D10", rows = 2)
        bas = CreateScriptService("Basic")
        bas.MsgBox(sNewRange)

## ShiftLeft

Verwijdert de meest linkse kolommen van een bepaald bereik en verplaatst naar links alle cellen rechts van het betreffende bereik. De huidige selectie wordt niet beïnvloed.

Afhankelijk van de waarde van het argument wholecolumns kunnen de verwijderde kolommen de hoogte van het opgegeven bereik beslaan of alle rijen in de kolom beslaan.

Deze methode retourneert een tekenreeks die de locatie van het resterende deel van het initiële bereik vertegenwoordigt. Als alle cellen in het oorspronkelijke bereik zijn verwijderd, wordt een lege tekenreeks geretourneerd.

### Syntaxis:

svc.ShiftLeft(range: str, wholecolumn: bool = False, opt columns: int): str

### Parameters:

range: Het bereik waaruit cellen worden verwijderd, als een tekenreeks.

wholecolumn: Indien ingesteld op False (standaard), dan is de hoogte van de verwijderde kolommen hetzelfde als de hoogte van het opgegeven range. Anders beslaan de verwijderde kolommen alle rijen in het blad.

columns: Het aantal kolommen dat moet worden verwijderd uit het opgegeven range. De standaardwaarde is de breedte van het oorspronkelijke range, wat ook de maximale waarde van dit argument is.

### Voorbeeld:

##### In BASIC

        ' Verwijdert het bereik "B3:B6"; verplaatst alle resterende cellen naar rechts
        oDoc.ShiftLeft("B3:B6")
        ' Verwijdert de eerste kolom in het bereik "A3:D6"
        oDoc.ShiftLeft("A3:D6", Columns := 1)
        ' De verwijderde kolommen (A tot D) beslaan alle rijen in het blad
        oDoc.ShiftLeft("A3:D6", WholeColumn := True)

##### In Python

        myDoc.ShiftLeft("B3:B6")
        myDoc.ShiftLeft("A3:D6", Columns = 1)
        myDoc.ShiftLeft("A3:D6", WholeColumn = True)

## ShiftUp

Verwijdert de bovenste rijen van een bepaald bereik en verplaatst alle cellen onder het betreffende bereik naar boven. De huidige selectie wordt niet beïnvloed.

Afhankelijk van de waarde van het argument wholerows kunnen de verwijderde rijen de breedte van het opgegeven bereik beslaan of alle kolommen in de rij beslaan.

Deze methode retourneert een tekenreeks die de locatie van het resterende deel van het initiële bereik vertegenwoordigt. Als alle cellen in het oorspronkelijke bereik zijn verwijderd, wordt een lege tekenreeks geretourneerd.

### Syntaxis:

svc.ShiftUp(range: str, wholerow: bool = False, opt rows: int): str

### Parameters:

range: Het bereik waaruit cellen worden verwijderd, als een tekenreeks.

wholerow: Indien ingesteld op False (standaard), dan is de breedte van de verwijderde rijen hetzelfde als de breedte van het opgegeven range. Anders beslaat de verwijderde rij alle kolommen in het blad.

rows: Het aantal rijen dat moet worden verwijderd uit het opgegeven range. De standaardwaarde is de hoogte van het oorspronkelijke range, wat ook de maximale waarde van dit argument is.

### Voorbeeld:

##### In BASIC

        ' Verwijdert het bereik "A3:D3"; verplaatst alle cellen eronder een rij omhoog
        oDoc.ShiftUp("A3:D3")
        ' Verwijdert de eerste rij in het bereik "A3:D6"
        oDoc.ShiftUp("A3:D6", Rows := 1)
        ' De verwijderde rijen beslaan alle kolommen in het blad
        oDoc.ShiftUp("A3:D6", WholeRow := True)

##### In Python

        myDoc.ShiftUp("A3:D3")
        myDoc.ShiftUp("A3:D6", rows = 1)
        myDoc.ShiftUp("A3:D6", wholerow = True)

## ShiftRight

Verplaatst een bepaald celbereik naar rechts door lege kolommen in te voegen. De huidige selectie wordt niet beïnvloed.

Afhankelijk van de waarde van het argument wholecolumns kunnen de ingevoegde kolommen de hoogte van het opgegeven bereik beslaan of alle rijen in de kolom beslaan.

Deze methode retourneert een tekenreeks die de nieuwe locatie van het initiële bereik vertegenwoordigt.

Als het verschoven bereik de bladranden overschrijdt, gebeurt er niets.

### Syntaxis:

svc.ShiftRight(range: str, wholecolumn: bool = False, opt columns: int): str

### Parameters:

range: Het bereik met lege kolommen aan de linkerkant, als een tekenreeks.

wholecolumn: Indien ingesteld op False (standaard), dan is de hoogte van de ingevoegde kolommen hetzelfde als de hoogte van het opgegeven range. Anders zullen de ingevoegde kolommen alle rijen in het blad omspannen.

columns: Het aantal kolommen dat moet worden ingevoegd. De standaardwaarde is de breedte van de oorspronkelijke range.

### Voorbeeld:

##### In BASIC

        ' Verplaatst het bereik "A3:A6" één kolom naar rechts; beïnvloedt alleen rijen 3 tot 6
        oDoc.ShiftRight("A3:A6")
        ' Verplaatst het bereik "A3:A6" vijf kolommen naar rechts
        oDoc.ShiftRight("A3:A6", Columns := 5)
        ' De ingevoegde kolom beslaat alle rijen in het blad
        oDoc.ShiftRight("A3:A6", WholeColumn := True)

##### In Python

        myDoc.ShiftRight("A3:A6")
        myDoc.ShiftRight("A3:A6", columns = 5)
        myDoc.ShiftRight("A3:A6", wholecolumn = True)

## SortRange

Sorteert het opgegeven bereik op basis van maximaal 3 kolommen/rijen. De sorteervolgorde kan per kolom/rij verschillen. Het retourneert een tekenreeks die het gewijzigde celbereik vertegenwoordigt. De grootte van het gewijzigde gebied wordt volledig bepaald door de grootte van het brongebied.

### Syntaxis:

svc.SortRange(range: str, sortkeys: any, sortorder: any = "ASC", destinationcell: str = "", containsheader: bool = False, casesensitive: bool = False, sortcolumns: bool = False): str

### Parameters:

range: Het bereik dat moet worden gesorteerd, als een tekenreeks.

sortkeys: Een scalaire waarde (indien 1 kolom/rij) of een matrix van kolom-/rijnummers beginnend bij 1. Het maximum aantal sleutels is 3.

sortorder: Een scalaire waarde of een reeks tekenreeksen met de waarden "ASC" (oplopend), "DESC" (aflopend) of "" (standaard oplopend). Elk item is gekoppeld aan het corresponderende item in sortkeys. Als de matrix sortorder korter is dan sortkeys, worden de overige sleutels in oplopende volgorde gesorteerd.

destinationcell: De doelcel van het gesorteerde celbereik, als een tekenreeks. Als een bereik is opgegeven, wordt alleen de cel linksboven in aanmerking genomen. Standaard wordt het bronbereik overschreven.

containsheader: Als dit True is, wordt de eerste rij/kolom niet gesorteerd.

casesensitive : Alleen voor het vergelijken van teksten. Standaardwaarde is False.

sortcolumns: Indien True, worden de kolommen van links naar rechts gesorteerd. Standaard = False: rijen worden van boven naar beneden gesorteerd.

### Voorbeeld:

##### In BASIC

        'Sorteerbereik op basis van kolommen A (oplopend) en C (aflopend)
        oDoc.SortRange("A2:J200", Array(1, 3), Array("ASC", "DESC"), CaseSensitive := True)

##### In Python

        myDoc.SortRange("A2:J200", (1, 3), ("ASC", "DESC"), casesensitive = True)

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

Service ScriptForge.Chart

SFDocuments.Document-service

Service ScriptForge.UI