Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 20 ноя 2019, 21:06

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !
Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: удаление страниц программно
СообщениеДобавлено: 04 май 2010, 19:48 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3728
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
Тема является дублем темы на старом форуме https://artberg-visio-forum.github.io/topic.asp@TOPIC_ID=2342.html, заранее прошу прошу прощения за флуд. Но очень нужно решить вопрос поскорее.
коллеги, я только начинаю осваивать VBA!
передо мной стоит задача, программно удалить последние 2 страницы многостраничного документа! Страницы имеют имена "Прил1" и "АКТ".
вот что у меня не получилось:
Код:
Sub PageDel()
Dim lastpage As String
Dim delpage As Visio.Page
Dim n As Integer
Dim thedoc As Visio.Document
Set thedoc = ThisDocument
For n = 1 To thedoc.Pages.Count
If Pages.Item(n).Name = "Прил1" Then DelNamedPage (n)
If Pages.Item(n).Name = "АКТ" Then DelNamedPage (n)
Debug.Print Pages.Item(n).Name
Next n


и функция которая должна по замыслу убивать страницы
Код:
Function DelNamedPage(n As Integer) As Visio.Page
Dim dDoc As Visio.Document
Dim dpage As Visio.Page
  Set dpage = aDoc.Pages.Item(n)
dpage.Delete
Set DelNamedPage = dpage
End Function

скорее всего проблема в функции. помогите советом !


Последний раз редактировалось Surrogate 24 май 2011, 15:24, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: удаление страниц программно
СообщениеДобавлено: 04 май 2010, 23:19 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1497
Очков репутации: 100599

Добавить очки репутацииУменьшить очки репутации
Должно быть примерно вот так:
Код:
Dim thedoc As Visio.Document
Sub PageDel()
    Dim lastpage As String
    Dim delpage As Visio.Page
    Dim n As Integer
    Set thedoc = ThisDocument
    For n = thedoc.Pages.Count To 1 Step -1
        If Pages.Item(n).Name = "Прил1" Then DelNamedPage n
        If Pages.Item(n).Name = "АКТ" Then DelNamedPage n
        Debug.Print Pages.Item(n).Name
    Next n
End Sub
Sub DelNamedPage(n As Integer)
    Dim dDoc As Visio.Document
    Dim dpage As Visio.Page
    Set dpage = thedoc.Pages.Item(n)
    dpage.Delete 1
End Function


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: удаление страниц программно
СообщениеДобавлено: 05 май 2010, 01:25 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3728
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
Геннадий, большое Вам спасибо !!!

Tumanov писал(а):
Должно быть примерно вот так:
Код:
Sub DelNamedPage(n As Integer)
    Dim dDoc As Visio.Document
    Dim dpage As Visio.Page
    Set dpage = thedoc.Pages.Item(n)
    dpage.Delete 1
End Function


пробовал комбинации Sub ... End Sub и Function ... End Function. Комп очень сильно начинает тормозить (файл сохраняется дольше минуты) ! Вариант Function ... End Function будет немного пошустрее! Но совсем не айс. значительно быстрее будет удалять 2 страницы ручками :(
в принципе все работает, но выскакивает сообщение о вот такой ошибке


Вложения:
Error.png
Error.png [ 2.8 Кб | Просмотров: 2911 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: удаление страниц программно
СообщениеДобавлено: 05 май 2010, 07:02 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1497
Очков репутации: 100599

Добавить очки репутацииУменьшить очки репутации
Это я просто в одном месте подправил, а в другом забыл :)
Function там совершенно не нужна, потому как возвращать нечего. Конечно же нужно Sub и End Sub.
На скорость это в принципе влиять не должно.
С маленьким файлом все происходит вообще мгновенно. Значит у Вас какие-то еще проблемы либо с файлом, либо с машиной. Или в каком-то другом куске программы.
------
P.S. А попробуйте еще вместо
Код:
dpage.Delete 1

поставить
Код:
dpage.Delete 0


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: удаление страниц программно
СообщениеДобавлено: 05 май 2010, 08:55 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3728
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
файл был не маленький около 1 Мб. В нем не было другого куска кода.

проблема была в другом. файл пытался сохранить на флэшку. сегодня попробовал сохранять на хард-диск, все сохранилось за 5 секунд :)
интересно сколько займет сохранение файла на сетевом диск на работе :o

Еще раз огромное спасибо!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: удаление страниц программно
СообщениеДобавлено: 05 май 2010, 11:39 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3728
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Сбор вторичного сырья
Должность: Безработный
Уровнь квалификации: Отсутствует
на сетевом диске сохраняется ~10c (вместе с остальными фрагментами кода). это терпимо!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB