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

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

13 Декабрь 2018, 16:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 8


« Стартовое сообщение: 30 Сентябрь 2014, 10:22 »

Если открыть файл, на листе которого есть примечание, и запустить процедуру, то Calc валится. Для возникновения ошибки важно, чтобы файл именно загружался с диска, если в новом файле на листе добавить примечание, вставить процедуру и выполнить, то сваливания не происходит. Приложил файл, чтобы не проделывать вышеизложенное.
Код:
Sub Test1
Dim oSheets As Object, I As Long
  oSheets = ThisComponent.getSheets
  For I = 1 To 100
    oSheets.copyByName("List1", "List99", 0)
    oSheets.removeByName("List99")
  Next I
End Sub 'Test1

* ProblemAnnotation.ods (14.34 Кб - загружено 8 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 30 Сентябрь 2014, 10:40 »

Что-то не сваливается.
Какой Офис и OS у вас?
Записан

sergeyvg
Участник
**
Offline Offline

Сообщений: 8


« Ответ #2: 30 Сентябрь 2014, 11:59 »

Windows 7 Профессиональная Service Pack 1
Libre Office Версия: 4.3.1.2
Apache OpenOffice 4.1.1
Запускаю Office, открываю файл, запускаю процедуру, где-то на 35 цикле сваливается.
Был момент, но сейчас не могу воспроизвести, что примечание на листе копии ссылалось на лист оригинала.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 635


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 30 Сентябрь 2014, 12:18 »

Только что попробовал Windows 7 Максимальная Service Pack 1 Libre Office Версия: 4.3.1.2
Отмигал-отработал полностью и остался живым.

Apache OpenOffice 4.1.1 действительно упал. Но видоизмененный макрос
Код:
Sub Test1
Dim oSheets As Object, I As Long
  oSheets = ThisComponent.getSheets
  For I = 1 To 100
    oSheets.copyByName("List1", "List"+Format(i,"00"), 0)
  Next I
  print "O!"
  For I = 1 To 100
    oSheets.removeByName("List"+Format(i,"00"))
  Next I
  print "A-a-a!.."
End Sub 'Test1
отработал нормально...
Может, не в примечании дело, а в слишком быстром создании-удалении листа?.. Wait между .copyByName() и .removeByName() ситуацию не улучшат?

(Между нами: если бы меня попытались заставить сто раз создать и тут же удалить - наверное, тоже психанул бы и дверью хлопнул)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 30 Сентябрь 2014, 13:23 »

Может, не в примечании дело, а в слишком быстром создании-удалении листа?
Я думаю дело в примечании: если открыть документ "как есть", то вылетает на 35 цикле(и вручную и автоматически), но если поставить меньше циклов чем 35, то не вылетает. Если в примечании написать что-нибудь, то потом не вылетает. LibreOffice4.3.2 и Apache OpenOffice4.1.1 ведут себя одинаково.
(Между нами: если бы меня попытались заставить сто раз создать и тут же удалить - наверное, тоже психанул бы и дверью хлопнул)
Тихо!!! Если макросы услышат, то Офис останется без дверей Шокирован
Записан

sergeyvg
Участник
**
Offline Offline

Сообщений: 8


« Ответ #5: 30 Сентябрь 2014, 13:54 »

Вот пример, что ссылка на примечание указывает на уже несуществующий лист (List100). Главное в тестировании, это соблюсти порядок: сохранить файл, переоткрыть Calc, открыть файл и не внося изменений запустить макрос.
Код:
Sub Test1
Dim oSheets As Object, I As Long
  oSheets = ThisComponent.getSheets
  For I = 1 To 100
    oSheets.copyByName("List1", "List"+Format(i,"00"), 0)
  Next I
  print "O!"
  For I = 1 To 100
oSheet = oSheets.getByName("List"+Format(i,"00"))
msgbox "I=" & I & "Name=" & oSheet.GetAnnotations.getByIndex(0).Parent.AbsoluteName 
    oSheets.removeByName("List"+Format(i,"00"))
  Next I
  print "A-a-a!.."
End Sub 'Test1
Записан
sergeyvg
Участник
**
Offline Offline

Сообщений: 8


« Ответ #6: 30 Сентябрь 2014, 14:02 »

Описался "на уже несуществующий лист (List100)", List100 существует, но примечания должны относиться к своим листам, а они относятся все к List100. Это на LibreOffice, на OpenOffice нормальные ссылки показывает, но при закрытии его окна все равно сваливается.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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