Макрос для calc [РЕШЕНО]

Автор Raptor26, 7 июля 2010, 12:48

0 Пользователи и 1 гость просматривают эту тему.

Raptor26

Добрый день, нужен макрос который должен скрывать определенный столбцы в calc, пожалуйста подскажите где взять.

VlhOwn

Меню Сервис -> Макросы -> Записать макрос... (появится панель записи макроса)
скрываете столбец
жмете на появившейся панели Завершить запись
даете макросу имя
открываете его на редактирование и наслаждаетесь

Рыбка Рио

Вот, например. Вводите столбцы через запятую (можно не обращать внимания на пробелы, к примеру, A, B, AA, AC, и макрос эти столбцы делает невидимыми.

Sub Main
Sheet=ThisComponent.CurrentController.ActiveSheet
S=inputbox("какие столбцы сделать невидимыми?","A,B,C, D? (введите через запятую)", "A")
S=Join(Split(S," "),"")
ArS=Split(S,",")
For i=0 to Ubound(ArS)
   Sheet.Columns.getByName(ArS(i)).isVisible=FALSE
Next
End Sub
ubuntu 12.04 + LibO3.6.0

Raptor26

REM  *****  BASIC  *****

Sub Main
Sheet=ThisComponent.CurrentController.ActiveSheet
S=inputbox("A,B,C,D")
S=Join(Split(S," "),"")
ArS=Split(S,",")
For i=0 to Ubound(ArS)
   Sheet.Columns.getByName(ArS(i)).isVisible=FALSE
Next
End Sub

Если я правильно вас понял, то макрос должен выглядеть таким образом? Но при запуске этого макроса мне выпадает окно где надо заново вводить столбцы которые я хотел бы скрыт. Как это убрать?

convas

#4
Проще так:

Sub Main
Dim ArS(4)   ' 4 - общее число столбцов, которые надо скрыть

ArS(0)="A"
ArS(1)="D"
ArS(2)="F"
ArS(3)="AB"

Sheet=ThisComponent.CurrentController.ActiveSheet

For i=0 to (Ubound(ArS)-1)
  Sheet.Columns.getByName(ArS(i)).isVisible=FALSE
Next
End Sub


Лучше так:

Sub Main
Dim A As Variant
A = Array("A","D","F","AB")

Sheet=ThisComponent.CurrentController.ActiveSheet

For i=LBound(A) to Ubound(A)
  Sheet.Columns.getByName(A(i)).isVisible=FALSE
Next
End Sub

VlhOwn

#5
Raptor26,
это же не трудно - попробуйте сделать, как я Вам написал.
После сохранения макроса выделите все столбцы, которые Вам необходимо скрыть, и выполните макрос - скроются все разом.
ВНИМАНИЕ! Выделите скрываемый (пробный) столбец до начала записи макроса (я это упустил в описании).

Вот, что получилось у меня:
sub aa
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())

end sub


Я в этом ничего не понимаю, :) но макрос работает и скрывает выделенные столбцы.

Raptor26

Цитата: convas от  7 июля 2010, 20:09Лучше так:

Код:
Sub Main
Dim A As Variant
A = Array("A","D","F","AB")

Sheet=ThisComponent.CurrentController.ActiveSheet

For i=LBound(A) to Ubound(A)
   Sheet.Columns.getByName(A(i)).isVisible=FALSE
Next
End Sub

Спасибо, работает.

smaharbA

диспач это зло, его изобретателя расстрелять и повесить
Я конечно далек от мысли... (с)