| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Сетевой график на VBA (Excel) |
| Автор: Trinitron 31.8.2005, 09:34 |
| Подскажите, можно рассчитать и нарисовать сетевой график в Excel на VBA. Если можно, то как рисовать его? Спасибо заранее. |
| Автор: Naghual 31.8.2005, 09:39 |
| Рассчитать в зависимости от чего? Нарисовать что? |
| Автор: Trinitron 31.8.2005, 09:45 |
| Есть разные виды работ со своими трудозатратами (продолжительность, стоимость). Надо расположить их по нужной последовательности (может быть разветвленная схема) и определить с какой даты будет начинаться каждая работа. Если какая-либо работа затянулась, то скорректировав дату её начало сразу было видно, когда окончится самая последняя работа). А графически это выглядит в виде разветвленной схемы - линий (могут быть прямыми или ломаными), окружностями с надписями внутри, надписи над или под линиями. Примерно так Добавлено @ 09:50 Забыл, линии по длине должны быть в зависимости от продолжительности работ |
| Автор: Naghual 31.8.2005, 09:51 |
| А исходные данные в каком виде и где хранятся? |
| Автор: Akina 31.8.2005, 10:08 |
| Trinitron А зачем изобретать велосипед? это же штатная функция систем управления проектами. Например у нас для такой раскладке при строительстве объекта (впрочем это лишь одна из многочисленных функций, причем не основная) используется комплекс http://www.spiderproject.ru/spider_e.php. |
| Автор: Trinitron 31.8.2005, 10:36 |
| Спайдер - это слишком круто, также может быть применен Проджек, но это слишком всё наворочено и там много всякого ненужного. Данные в виде таблицы, хотя можно изначально их через какую-то форму вносить Добавлено @ 10:43 Я на VBA в Excel немного писал, меня тормозит формирование простых графических элементов (линии и окружности) на лист Excel, да ещё вывод в окружность и около линий какого-либо текста |
| Автор: Staruha 31.8.2005, 10:54 |
| Если тебе нужна диаграмма на основе таблицы,на панели есть мастер диаграмм. |
| Автор: Trinitron 31.8.2005, 11:11 |
| Да нет, нужет именно сетевой график, который изображается в виде окружностей со связями ввиде линий со стрелками, да ещё с надписями Это не диаграмма |
| Автор: Staruha 31.8.2005, 16:18 |
| Если это рисунок.Проще нарисовать.Включаешь на панели Рисунок. Еслми круг ровный не получается,щелкни два раза по нему вылетит диалоговое окно задай размеры.Также поставь Нет заливки .Тогда можно текст писать прямо в ячейки Или можно использовать Вставить текст и убрать границы. |
| Автор: Naghual 31.8.2005, 17:35 |
| Ну давай пытатся решать твою задачку. Алгоритм представляеш? |
| Автор: Staruha 31.8.2005, 20:27 |
| Да я так думаю ,что нужно нарисовать автофигуры с прозрачным фоном.К ним привязать ячейки в которых автоматически меняются значения. |
| Автор: Alles 1.9.2005, 03:07 |
| Я тоже когдато столкнулся с сабжем. Стандартные элементы Ексела использовать не хотел, что то хотелось аригинальное. Писал программу обработки логов с BTS. использовал Shapes. Получилась линейная диаграмма и гистограмма. Если нужен исходник для разбора полетов говори куда выслать. |
| Автор: Trinitron 2.9.2005, 06:51 |
| Может я что-то не понял, мне надо програмно в нужном место нарисовать, например, линию со стрелкой нужной длины (зависит от продолжительности данной работы), а к ней, т.е. к стрелке, приляпать окружность какого-то постоянного размера, а в ней какой-то текст или вывести значение переменной. А к этой окружности снова линия (прямая или ломаная) со стрелкой и т.д. Математический расчет (т.е. координаты вывода этих всех элементов) я уж осилю, а вот как на рабочий лист Экселя это выводить - никогда не делал. Раньше работал только с выводом значений в ячейки и не более того. |
| Автор: Alles 2.9.2005, 07:07 |
| Нажми на кнопку запись макроса в Екселе ! Далее создавай любую фигуру, окружность, линию. Можешь потом двигать эти объекты , переименовывать. Затем смотри в теле этого макроса что и как , там будет все. Отразятся буквально все твои действия. Исходи з этого бери нужный тебе кусок ( наприсер размер и привязка к координатам) и используй свои данные. Имхо самый простой путь. |
| Автор: Trinitron 2.9.2005, 07:32 |
| Вот!!!!!!!!!!!! Огромное спасибо тебе, Alles! Самое смешное - как я сам не догадался до этого |
| Автор: Trinitron 2.9.2005, 08:12 |
| А как можно внутрь нарисованной окружности вывести значение переменной? |
| Автор: Naghual 2.9.2005, 09:09 | ||
|
| Автор: Trinitron 2.9.2005, 10:06 |
| Спасибо, Naqhual, попробую |
| Автор: Trinitron 2.9.2005, 10:56 |
| Вот пробный фрагмент: ActiveSheet.Shapes.AddLine(27.75, 63.75, 113.25, 63.75).Select Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium ActiveSheet.Shapes.AddShape(msoShapeOval, 114#, 42#, 42#, 42#).Select ActiveWorkbook.Names.Add Name:="Дата1", RefersToR1C1:="=""Овал 3""" ActiveSheet.Shapes.AddLine(156#, 63.75, 213.75, 63.75).Select Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium ActiveSheet.Shapes.AddShape(msoShapeOval, 214.5, 43.5, 40.5, 40.5).Select ActiveWorkbook.Names.Add Name:="Дата2", RefersToR1C1:="=""Овал 5""" ActiveSheet.Shapes.AddLine(135#, 84#, 135#, 127.5).Select ActiveSheet.Shapes.AddLine(135#, 127.5, 185.25, 127.5).Select Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium ActiveSheet.Shapes.AddShape(msoShapeOval, 186#, 106.5, 42#, 42#).Select ActiveWorkbook.Names.Add Name:="Data3", RefersToR1C1:="=""Овал 8""" ActiveSheet.Shapes("Дата1").Select Selection.Characters.Text = "12/09/05" Ругается на неверный параметр в предпоследней строке |
| Автор: Naghual 2.9.2005, 11:03 | ||
| Правильно пишет. Нет у тебя овала с таким именем. Задавать имя нужно так:
|
| Автор: Trinitron 2.9.2005, 11:11 |
| Спасибо, Naqhual, всё получилось. А размер шрифта при выводе в окружность можно изменить? И последний, похоже на то, вопрос: а как можно на листе эти объекты разом все удалить? |
| Автор: Naghual 2.9.2005, 11:20 |
| Через коллекцию Shapes в цикле. |
| Автор: Trinitron 2.9.2005, 11:21 |
| А вот этого я не понял А размер шрифта при выводе в окружность можно изменить? |
| Автор: Naghual 2.9.2005, 11:36 |
| Что ты не понял? Объяснить как удалить? Шрифт: Воспользуйся методом записи макроса! И все поймеш! |
| Автор: Trinitron 2.9.2005, 11:39 |
| Если можно, то подскажи примером как удалить нарисованные овалы и линии Со шрифтом разобрался |
| Автор: Naghual 2.9.2005, 11:44 | ||
|
| Автор: Trinitron 2.9.2005, 11:47 |
| ОГРОМНОЕ тебе СПАСИБО, Naqhual, всё получилось. Тему можно закрыть. |
| Автор: vaulin 24.3.2010, 11:39 | ||
Пример простенькой программки, которая рисует линию на форме. Данный код необходимо вставить в тело формы (создать форму и нажать F7)
Программка рисует на форме VBA Excel линию с координатами точек (10, 40) и (150, 100) после щелчка мыши по панели формы, а также окружность. |
| Автор: GWolf 14.12.2010, 14:20 |
| Уважаемый Trinitron, здравствуйте! А нельзя ли выложить пример реализации "рисовалки"? |
| Автор: Pavel73 30.9.2013, 17:37 |
| Помогите нужно создать таблицу в Excel. Столбцы: ФИО, Должность, Дата рождения, Несовер. дети г. р., Дата окончания контракта. Нужно что бы когда остается месяц до завершения контракта строка с человеком у которого заканчивается контракт выделялась красным цветом. |