[Solved] Dodawanie komórek na bieżącej stronie

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
kturendyk
Posty: 30
Rejestracja: pt sty 22, 2016 4:59 pm

[Solved] Dodawanie komórek na bieżącej stronie

Post autor: kturendyk »

Witam
Może i błahostka ale znowu nie mogę sobie poradzić. Znalazłem taki kod

Kod: Zaznacz cały

sub wstawkomorki
Dim Doc As Object
 Dim Sheet As Object
 Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
 Doc = ThisComponent
 Sheet = Doc.Sheets(0)
 CellRangeAddress.Sheet = 0
 CellRangeAddress.StartColumn = 1
 CellRangeAddress.StartRow = 8
 CellRangeAddress.EndColumn = 2
 CellRangeAddress.EndRow = 8
 Sheet.insertCells(CellRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN)

end sub
Działa to ładnie ale tylko w pierszym arkuszu (albo w arkuszu zaznaczonym w Doc.Sheets(0),CellRangeAddress.Sheet = 0)
Ja potrzebował bym żeby te komórki dodawało w aktualnie aktywnym arkuszu ale nie działa mi to.
Próbowałem z oSheet = oDoc.getCurrentController().ActiveSheet ale jakoś to nie wychodzi zawsze dodaje do pierwszego arkusza. Co robię źle?
Ostatnio zmieniony wt mar 08, 2016 7:45 pm przez kturendyk, łącznie zmieniany 1 raz.
Apache OpenOffice 4.1.4, Windows 8.1
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Dodawanie komórek na bieżącej stronie

Post autor: belstar »

kturendyk pisze:Co robię źle?
Musisz podać Metodzie InsertCells Odpowiednie dane, choć sam o tym wspomniałeś.
kturendyk pisze:Doc.Sheets(0),CellRangeAddress.Sheet = 0)
Dobrze kombinowałeś z getCurrentController, tylko potem pogubiłeś się.

Książka Andrew Macro i MRI to podstawa.

Kod mógłby wyglądać jak poniżej:

Kod: Zaznacz cały

Sub wstawkomorki
    Dim Doc As Object
    Dim Sheet As Object
    Dim Index As Integer
    Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
    
    Doc = ThisComponent
    Index = doc.getCurrentController().getSelection().getRangeAddress().Sheet
    Sheet = Doc.Sheets(0)
    CellRangeAddress.Sheet = Index
    CellRangeAddress.StartColumn = 1
    CellRangeAddress.StartRow = 8
    CellRangeAddress.EndColumn = 2
    CellRangeAddress.EndRow = 8
    Sheet.insertCells(CellRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN)
End sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
kturendyk
Posty: 30
Rejestracja: pt sty 22, 2016 4:59 pm

Re: Dodawanie komórek na bieżącej stronie

Post autor: kturendyk »

Właśnie brakowało mi tego Index.
Jakoś nie mogę poskładać składni poleceń żeby zadziałały,zwłaszcza ActiveSheet bo na temat sheet(0) jest wiele przykładów
Teraz działa. Wiedziałem że to błahostka.
Andrew Macro znam prawie na pamięć tylko z dostosowaniem do swoich potrzeb mam problem.
MRI to dla mnie nowość dopiero się uczę
Ale ogólnie dziękuję za pomoc i kontynuuję walkę dalej
Apache OpenOffice 4.1.4, Windows 8.1
ODPOWIEDZ