Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

28 Сентябрь 2020, 21:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Метод Names. Item (Excel)  (Прочитано 1531 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 14


« Стартовое сообщение: 27 Август 2020, 12:00 »

Добрый день, всем.
С макросами в LibreOffice работаю недавно.
Подскажите, в vba вот такая конструкция
    Dim curWorkBook As Workbook
    Set curWorkBook = ThisWorkbook
 
    Dim reportSheet As Worksheet
    Set reportSheet = curWorkBook.Worksheets("Отчет")

    Dim curTableName As Name
    Set curTableName = reportSheet.Names.Item("mySortRange")

в LO на последней строке вылетает в ошибку
"Type: com.sun.star.container.NoSuchElementException
Message: "

Как все же переменной присвоить объект name?
Записан
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #1: 27 Август 2020, 12:28 »

Можно так (с теми же именами переменных):

Код:
Sub Test
  Dim curWorkBook
  Set curWorkBook = ThisComponent
 
  Dim reportSheet
  Set reportSheet = curWorkBook.getSheets.GetByName("Отчет")

  Dim curTableName
  Set curTableName = reportSheet.NamedRanges.getByName("mySortRange")
End Sub
Записан

Владимир.
Denis_Oleynikof
Участник
**
Offline Offline

Сообщений: 14


« Ответ #2: 27 Август 2020, 12:44 »

Спасибо, помогли.
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #3: 27 Август 2020, 12:50 »

    Dim curWorkBook As Workbook
    Set curWorkBook = ThisWorkbook
 
    Dim reportSheet As Worksheet
    Set reportSheet = curWorkBook.Worksheets("Отчет")

    Dim curTableName As Name
    Set curTableName = reportSheet.Names.Item("mySortRange")

в LO на последней строке вылетает в ошибку
"Type: com.sun.star.container.NoSuchElementException
Message: "

У меня работает нормально:

* VBANamedRange.ods (8.14 Кб - загружено 6 раз.)
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #4: 27 Август 2020, 12:55 »

Добрый день, Михаил!
Во вложении к Вашему сообщению имя mySortRange относится к (Scope) документу, а не к листу "Отчет", как в исходном сообщении.
« Последнее редактирование: 27 Август 2020, 13:01 от sokol92 » Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #5: 27 Август 2020, 13:02 »

а не к листу "Отчет", как в исходном сообщении.

Хе, я пересмотрел исходное сообщение, и снова не увидел тестового документа, в котором не так. Подмигивающий
Но спасибо за уточнение - посмотрю в таком режиме.
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #6: 27 Август 2020, 13:03 »

 Я имел в виду код VBA. Прошу прощения за неясность высказываний. Улыбка
Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #7: 27 Август 2020, 13:07 »

Так ведь в коде VBA как раз нет информации, к какому типу именованного диапазона происходит обращение. Только какой метод используется. Это ортогональные понятия, так ведь?

В любом случае это баг. Нужен багрепорт. Обход - это не решение.
« Последнее редактирование: 27 Август 2020, 13:10 от mikekaganski » Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #8: 27 Август 2020, 13:15 »

Set curTableName = reportSheet.Names.Item("mySortRange")

ReportSheet имеет тип Worksheet, соответственно мы обращаемся к свойству Worksheet.Names.

У меня стойкое ощущение (основанное на опыте последних месяцев), что путь с поддержкой VBA Excel в полном объеме еще не пройден и наполовину.
« Последнее редактирование: 27 Август 2020, 13:18 от sokol92 » Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #9: 27 Август 2020, 13:37 »

что путь с поддержкой VBA Excel в полном объеме

... это утопия. Однако ненаписание багов, когда они обнаруживаются - это путь в обратном направлении.
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #10: 27 Август 2020, 13:49 »

Я  - за отчеты о багах. А где-нибудь можно почитать про "VBA" - объекты, кроме как здесь?
« Последнее редактирование: 27 Август 2020, 14:05 от sokol92 » Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #11: 27 Август 2020, 15:04 »

А где-нибудь можно почитать про "VBA" - объекты, кроме как здесь?

Боюсь, это снова "неясность высказываний" Показывает язык - и конечно, так и хочется ответить ссылками на здесь и здесь.

Но если контекст вопроса - исходный код поддержки VBA конкретно в Calc - то только там, где Вы правильно нашли...
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #12: 27 Август 2020, 15:13 »

Спасибо!
Записан

Владимир.
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 043


« Ответ #13: 27 Август 2020, 16:08 »

@sokol92, если захотите исправить - помогу с оформлением патча. Напишите номер бага, я отправлю туда code pointers. (Это всего лишь просмотрено при реализации sheet-local named ranges в версии 3.4.)
Записан

С уважением,
Михаил Каганский
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 163


WWW
« Ответ #14: 27 Август 2020, 16:30 »

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

Владимир.
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!