Помогите новичку!) макрос для переноса введенной информации в диалоговом окне

Автор Fil, 17 июля 2023, 03:51

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

Fil

Доброго времени суток Форумчане!)

Прошу помощи! Суть вопроса такова, не могли бы вы привести пример макроса который при срабатывании будет переносить информацию введенную в текстовом поле диалогового окна в LibreOffice Calc на определенный лист?

есть пример макроса но он не работает:

Sub TransferTextToCell
    Dim oDialog As Object
    Dim oTextField As Object
    Dim oSheet As Object
    Dim oCell As Object
   
 
    oDialog = GetActiveDialog()
   
    If IsNull(oDialog) Then
        MsgBox "Диалоговое окно не открыто"
        Exit Sub
    End If
   
    oTextField = oDialog.getControl("TextField1")
 
    If oTextField.Text = "" Then
        MsgBox "Пожалуйста, введите значение в текстовое поле"
        Exit Sub
    End If
   
    oSheet = ThisComponent.Sheets.getByName("Sheet1") ' Замените "Sheet1" на имя нужного листа
    oCell = oSheet.getCellRangeByName("A1") ' Замените "A1" на адрес нужной ячейки
   
    oCell.String = oTextField.Text
   
    MsgBox "Готово"
End Sub

bigor

Здравствуйте.
Вы бы написали, на что ругается и как. А лучше бы прикрепили файл с макросом и диалогом, что бы не гадать, как там у вас все устроено.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Fil

Пока ждал ответа переписал макрос, сейчас проблема в том что он не копирует информацию введенную в текстовое поле.

Прикрепляю пример, кнопа которая вызывает диалоговое окно, в котором по идеи в текстовое поле вводим данные и при нажатии на кнопку данные должны копироваться в ячейку B3.

 вот пример макроса:

Sub TransferTextToCell
    Dim oDialog As Object
    Dim oTextField As Object
    Dim oSheet As Object
    Dim oCell As Object
   
    oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   
    If IsNull(oDialog) Then
    MsgBox "Диалоговое окно не открыто"
    Exit Sub
    End If
   
    oTextField = oDialog.getControl("TextField1")
   
    oSheet = ThisComponent.Sheets.getByName("List1") ' Замените "Sheet1" на имя нужного листа
    oCell = oSheet.getCellRangeByName("B3") ' Замените "A1" на адрес нужной ячейки
   
    oCell.String = oTextField.Text
    MsgBox oCell.String
    oDialog.Dispose()
End Sub

bigor

Вижу непонятно связанные 3 макроса, попробуйте в приложенном файле нажать кнопку
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Fil

Я так понял пропустил строчку в коде и неправильно вызывал макросы?
и не подскажешь что почитать по правильному и грамотному написанию макросов для чайников почитать?) ;D

bigor

Цитата: Fil от 17 июля 2023, 11:47что почитать по правильному и грамотному написанию макросов
Питоньяк. Видел на русском, относительно старая редакция, и на английском новая. Поиском по форуму должны найтись обе
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Fil