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

Форум по вопросам применения и программирования в Visio
Текущее время: 12 авг 2020, 04:13

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Автоматический подгон размера страницы
СообщениеДобавлено: 22 авг 2012, 14:45 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Здравствуйте. У меня такой вопрос:

В программе строится отчёт .vsd, но иногда он не влазит на листы (их запланировано 5 штук), а иногда листы пустые остаются. В каком направлении мне вообще начинать смотреть? Где-то в Page Setup?

Если нужны какие-то дополнение - сообщите плж. Могу так же и пример отчета скинуть.


Последний раз редактировалось ssementsov 23 авг 2012, 14:14, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 22 авг 2012, 14:50 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Т.е. если я правильно понимаю, то необходимо сначала узнать размеры отчета, а потом если не хватает листов, то добавлять. Или если есть пустые, то их удалят.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 22 авг 2012, 16:19 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 927
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 124

Добавить очки репутацииУменьшить очки репутации
смотря как вообще строится этот отчет. логично было бы в процессе построения отслеживать границы лист и если не влазит, добавлять новый. зачем сразу 5 то?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 22 авг 2012, 16:21 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
В среднем отчет занимает около 3-4 листов. поэтому сразу 5 делалось. Но сделался отчет, который не влез.

Так как отслеживать границы листа?) Где почитать можно про всю эту кухню?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 22 авг 2012, 19:32 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 927
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 124

Добавить очки репутацииУменьшить очки репутации
любая фигура на листе имеет координаты ее базовой точки - см линейки по бокам окна. сами координаты и вообще св-ва фигуры можно посмотреть, если включить в настройках "режим разработчика" (developer mode). после этого нажать правой кнопкой мыши и выбрать таблицу фигуры или если англ. то shapesheet (на каждую ячейку можно узнать информацию по F1). вот и смотреть, если там в полях PinX или PinY (для 2D-фигуры (с площадью)) например отрицательное значение, то фигура за границей листа. или для линий координаты начала и конца в отрицательном диапазоне. или наоборот, если превышают размеры страницы.
потом надо разбираться с написанием макросов под это дело. если не умеете, то смотрите различные примеры с этого форума или со старого, там куча всего: http://visio.artberg.ru/forum/default.asp
так же можно включить запись макросов в визио, сделать какие-то действия, например нарисовать линию, завершить запись, нажать Alt+F11 и посмотреть что получилось. и тп


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 11:17 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Спасибо. Примерно понял Вас. Будем думать дальше.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 11:36 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Я вот заметил, если нажать Auto Size два раза, то Visio добавляет мне страницу, если не влез отчет или убирает пустую. Т.е. я могу записать такой макрос, который делает это и потом использовать его после формирования отчета?


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
думаю, что-то такой код поможет например
Код:
Sub Macro1()

    Application.ActiveWindow.Page.AutoSize = True
    Application.ActiveWindow.Page.AutoSizeDrawing
    Application.ActiveWindow.Page.AutoSize = False
   
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 11:49 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Сейчас записал макрос. Получил такой код. Он работает. Т.е. сначала выключает Auto Size, затем включает его.

Код:
Sub ResizePage()
'
' Автоматическое изменение размера страницы. Добавление или удаление страницы.
'

    'Enable diagram services
    Dim DiagramServices As Integer
    DiagramServices = ActiveDocument.DiagramServicesEnabled
    ActiveDocument.DiagramServicesEnabled = visServiceVersion140

    Dim UndoScopeID1 As Long
    UndoScopeID1 = Application.BeginUndoScope("Auto Size Page")
    Application.ActiveWindow.Page.AutoSize = False
    Application.EndUndoScope UndoScopeID1, True

    Dim UndoScopeID2 As Long
    UndoScopeID2 = Application.BeginUndoScope("Auto Size Page")
    Application.ActiveWindow.Page.AutoSize = True
    Application.ActiveWindow.Page.AutoSizeDrawing
    Application.EndUndoScope UndoScopeID2, True
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 11:51 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Осталось только понять при генерации отчета стоит Auto Size всегда включенным или нет. Мне кажется, что стоит, но почему-то автоподгон страницы не происходит.

И нету ли в сгенерированном макросе "лишних" строк?) Т.е. те которые можно безболезненно удалить?
Хотел еще попросить.. не могли бы Вы прокомментировать в моем макросе строки кода? Чтобы понять что там происходит.. Спасибо.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:10 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 927
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 124

Добавить очки репутацииУменьшить очки репутации
про autosize не знал :) интересно.

насчет твоего макроса: там много лишнего. вообще, чем не подходит код, написанный Surrogate?

Цитата:
Код:
Sub Macro1()

    Application.ActiveWindow.Page.AutoSize = True
    Application.ActiveWindow.Page.AutoSizeDrawing
    Application.ActiveWindow.Page.AutoSize = False
   
End Sub


ставишь его после генерации твоего отчета и всё


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:12 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Просто смутила его красота) Проверил, всё действительно работает)) Спасибо ему!

Только вот вопрос ещё. После этого требует сохранить изменения в файле. Как сразу принять изменения в макросе? Чтобы у пользователя не спрашивало это.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:22 
Не в сети
Глав-тролль

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
9rey писал(а):
про autosize не знал :) интересно.


а меня этот автосайз выбешивает :(
MS ставит его на всех листах по умолчанию, да еще убрали вариант "как в настройках принтера" в настройках печати File -> Параметры страницы -> Размер страницы
да и размер страницы, не понятно как определяется…
придется что-то придумывать, чтоб с этим бороться

ssementsov писал(а):
Только вот вопрос ещё. После этого требует сохранить изменения в файле. Как сразу принять изменения в макросе? Чтобы у пользователя не спрашивало это.

у меня не спрашивало


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:28 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
У меня спрашивает. Соответственно, жму не сохранять, изменений как не бывало. Можно ли это в макросе описать?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:34 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Добавил к шаблону этот макрос. Но он почему-то не запускается. Может что-то в настройках не так?

p.s. В настройках все макросы включены. Но макрос почему-то не выполняется...(


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3964
Откуда: оттуда
Использую Visio c: 1998
Уровнь квалификации: Отсутствует
можно попробовать добавить строку Application.ActiveDocument.Save
Код:
Sub Macro1()
    Application.ActiveWindow.Page.AutoSize = True
    Application.ActiveWindow.Page.AutoSizeDrawing
    Application.ActiveWindow.Page.AutoSize = False
    Application.ActiveDocument.Save
End Sub


или это все делается на основе шаблона и файл имеет имя по умолчанию типа "Drawing1", тогда файл придется куда-то сохранять. но все-таки странно, что после изменения настроек листа, требуется сохранение документа…

при вызове макроса клавишами Alt+F8, нужно смотреть где ищутся макросы "Макросы в" "Активный документ"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 12:59 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Вот таким образом я добавил макрос. Всё верно?
Изображение

Все делается на основе шаблона template.vsd, после сохраняется конкретно уже в другой файл.
Как тогда быть? Макрос получается выполняется ещё для незаполненного шаблона? А когда шаблон разъехался, сохранился в файл, то макрос для файла уже не выполняется. Получается так?

п.с. Прикрепляю шаблон. Мне кажется, что дело в том, что для шаблона он выполняется, а для итогового файла нет.
После просмотра итогового файла, там этот макрос есть. И я могу его вручную запустить... Есть какой-то выход из этой ситуации?


Последний раз редактировалось ssementsov 23 авг 2012, 14:15, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 13:09 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Прочитал следующее:

Автоматический запуск макроса во время открытия книги
Если макрос записан и сохранен с именем "Auto_open", он будет запускаться при каждом открытии книги, содержащей этот макрос. Другим способом автоматического запуска макроса при открытии книги является написание процедуры на языке VBA (Visual Basic для приложений) в событии Open книги с помощью редактора Visual Basic. Событие Open представляет собой встроенное событие книги, запускающее код макроса при каждом открытии книги.

Поможет интересно... будем пробовать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 13:09 
Не в сети
Глав-тролль

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

а что значит не выполняется, что происходит ? или попробуй запустить его пошагово, вначале поставь в коде курсор на начало макроса и клавишей F8 прогони строки кода.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автоматический подгон размера страницы
СообщениеДобавлено: 23 авг 2012, 13:11 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 22 авг 2012, 14:40
Сообщений: 126
Откуда: Беларусь, Гомель
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Прогонял. Всё ок вроде бы. Значение меняется с false на true. (это я про Ваш код говорю)

Если я его запускаю сам, в готовом файле, то всё прекрасно. Но сам он не выполняется, при создании это файла(


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

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



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

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


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

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