Makro wstawiające nową kolumnę i kopiującą inną

Użytkowanie arkusza kalkulacyjnego
Awatar użytkownika
odwieczny
Posty: 10
Rejestracja: pn lut 08, 2021 9:48 pm

Makro wstawiające nową kolumnę i kopiującą inną

Post autor: odwieczny »

Potrzebuję makro które wstawi już do istniejącej tabeli nową kolumnę np. pomiędzy kolumną "D" i "E" nową kolumnę "E" i do tej nowej kolumny skopiuje zawartość innej kolumny.
Próbowałem zarejestrować makro w AOO ale to nie chce ni cholibki zadziałać... da się to zrobić w ogóle (wstaw nowa kolumnę poprzez makro)?
OpenOffice 4.1.7 Windows 8.1
LibreOffice 7.1.0 Windows 8.1
Poza tym ciągle się uczę więc proszę o wyrozumiałość ;)
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Makro wstawiające nową kolumnę i kopiującą inną

Post autor: Jan_J »

Tu: https://forum.openoffice.org/en/forum/v ... 20&t=62397 masz przykład jak wstawić programowo wiersz. Z kolumną będzie analogicznie, ze zmianą obiektu Rows na Columns.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
odwieczny
Posty: 10
Rejestracja: pn lut 08, 2021 9:48 pm

Re: Makro wstawiające nową kolumnę i kopiującą inną

Post autor: odwieczny »

Czyli taki kod mi wystarczy:

Kod: Zaznacz cały

Sub DodajKolumna
	rem W arkuszu AKTYWNYM
	thisComponent.CurrentController.ActiveSheet.Columns.insertByIndex(5,1)
lub

Kod: Zaznacz cały

Sub DodajKolumna	
	rem W arkuszu według INDEKSu
	thisComponent.Sheets(0).Columns.insertByIndex(5,1)	
End Sub
Natomiast z kopiowaniem wybranej kolumny do tej nowej mam problem. Udało mi się tylko taki kod wykombinować:

Kod: Zaznacz cały

Sub KopiujKolumna

skad  = thisComponent.Sheets.getByIndex(0).getCellRangeByName("A1:A100").getRangeAddress()
dokad = thisComponent.Sheets.getByIndex(0).getCellByPosition(5,0).getCellAddress()

thisComponent.Sheets.getByIndex(0).copyRange( dokad , skad )

End Sub
Działać działa ale mam wrażenie że można byłoby to lepiej zrobić...
OpenOffice 4.1.7 Windows 8.1
LibreOffice 7.1.0 Windows 8.1
Poza tym ciągle się uczę więc proszę o wyrozumiałość ;)
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Makro wstawiające nową kolumnę i kopiującą inną

Post autor: Jan_J »

Kopiowanie obszarów bardziej efektywnie da się przerowadzić operacją uno:copy z zestawu makropoleceń (tych prawdziwych, bo kod Basic zawiera zwykłe odwołania do API). Przykład użycia: https://forum.openoffice.org/pl/forum/v ... 54&p=22372
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ