Как мне обратиться к кнопке? (Макросы электронных таблиц OpenOffice) - PullRequest
1 голос
/ 26 февраля 2009

У меня есть кнопка, которая запускает макрос в OpenOffice. Внутри макроса я хочу изменить имя кнопки. Оригинальный код для Excel

    ActiveSheet.Shapes("PunchButton").select
    Selection.Characters.Text = "Punch In"

но первая строка ничего не делает. Я проверил лист в OpenOffice, и у кнопки есть правильное имя. Как мне к этому добраться?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2009

Здесь есть фрагмент кода здесь , который показывает, как изменить метку и состояние всех кнопок, кроме той, которую вы хотите.

Sub clickCommandButton1
    oPage = Thiscomponent.Sheets.getByName("Sheet1").getDrawPage
    iCount = oPage.getCount
    For i = 0 to iCount - 1
        oEle = oPage.getByIndex(i)
        oControl = oEle.getControl()
        If oControl.DefaultControl = "com.sun.star.form.control.CommandButton" Then
            ' Found command button - change label of other buttons '
            If oEle.Name <> "CommandButton1" Then
                oControl.Label = "Inactive"
                oControl.Enabled = False
            End If
        End If
    Next
End Sub 

Я бы изменил это, чтобы перебрать все кнопки, но изменил бы внутренний оператор if на '= "вместо" <> "(и удалил бы отключение, если в этом нет необходимости).

0 голосов
/ 26 февраля 2009

Спасибо Пакс, вот мой рабочий код. Не уверен, насколько это надежно, но для рассматриваемого листа это работает. Еще раз спасибо, Пакс.

sub testThis
    setButtonLabel("PunchButton", "hello")
    setButtonLabel("ReportButton", "hello")
end sub

sub setButtonLabel(controlName, label)
    oPage = ThisComponent.CurrentController.ActiveSheet.getDrawPage
    iCount = oPage.getCount
    For i = 0 to iCount - 1
        oControl = oPage.getByIndex(i).getControl
        If oControl.Name = controlName Then
            oControl.label = label
            exit sub
        End If
    Next
end sub
...