Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сетевой график на VBA (Excel), построение сетевог графика на VBA(Excel) 
:(
    Опции темы
Trinitron
Дата 31.8.2005, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Подскажите, можно рассчитать и нарисовать сетевой график в Excel на VBA. Если можно, то как рисовать его? Спасибо заранее.
PM MAIL   Вверх
Naghual
Дата 31.8.2005, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Рассчитать в зависимости от чего?
Нарисовать что?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 31.8.2005, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Есть разные виды работ со своими трудозатратами (продолжительность, стоимость). Надо расположить их по нужной последовательности (может быть разветвленная схема) и определить с какой даты будет начинаться каждая работа. Если какая-либо работа затянулась, то скорректировав дату её начало сразу было видно, когда окончится самая последняя работа). А графически это выглядит в виде разветвленной схемы - линий (могут быть прямыми или ломаными), окружностями с надписями внутри, надписи над или под линиями. Примерно так
Добавлено @ 09:50
Забыл, линии по длине должны быть в зависимости от продолжительности работ
PM MAIL   Вверх
Naghual
Дата 31.8.2005, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



А исходные данные в каком виде и где хранятся?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Akina
Дата 31.8.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Trinitron
А зачем изобретать велосипед? это же штатная функция систем управления проектами.

Например у нас для такой раскладке при строительстве объекта (впрочем это лишь одна из многочисленных функций, причем не основная) используется комплекс "Спайдер".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Trinitron
Дата 31.8.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Спайдер - это слишком круто, также может быть применен Проджек, но это слишком всё наворочено и там много всякого ненужного. Данные в виде таблицы, хотя можно изначально их через какую-то форму вносить
Добавлено @ 10:43
Я на VBA в Excel немного писал, меня тормозит формирование простых графических элементов (линии и окружности) на лист Excel, да ещё вывод в окружность и около линий какого-либо текста
PM MAIL   Вверх
Staruha
Дата 31.8.2005, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Если тебе нужна диаграмма на основе таблицы,на панели есть мастер диаграмм.


--------------------
Возмездие настигнет
PM MAIL   Вверх
Trinitron
Дата 31.8.2005, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Да нет, нужет именно сетевой график, который изображается в виде окружностей со связями ввиде линий со стрелками, да ещё с надписями
Это не диаграмма

Это сообщение отредактировал(а) Trinitron - 31.8.2005, 11:11
PM MAIL   Вверх
Staruha
Дата 31.8.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Если это рисунок.Проще нарисовать.Включаешь на панели Рисунок. Еслми круг ровный не получается,щелкни два раза по нему вылетит диалоговое окно задай размеры.Также поставь Нет заливки .Тогда можно текст писать прямо в ячейки Или можно использовать Вставить текст и убрать границы.


--------------------
Возмездие настигнет
PM MAIL   Вверх
Naghual
Дата 31.8.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Ну давай пытатся решать твою задачку.
Алгоритм представляеш?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Staruha
Дата 31.8.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Да я так думаю ,что нужно нарисовать автофигуры с прозрачным фоном.К ним привязать ячейки в которых автоматически меняются значения.


--------------------
Возмездие настигнет
PM MAIL   Вверх
Alles
Дата 1.9.2005, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.6.2003
Где: RUSSIA

Репутация: нет
Всего: 2



Я тоже когдато столкнулся с сабжем. Стандартные элементы Ексела использовать не хотел, что то хотелось аригинальное.
Писал программу обработки логов с BTS. использовал Shapes.
Получилась линейная диаграмма и гистограмма. Если нужен исходник для разбора полетов говори куда выслать.

PM MAIL ICQ   Вверх
Trinitron
Дата 2.9.2005, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Может я что-то не понял, мне надо програмно в нужном место нарисовать, например, линию со стрелкой нужной длины (зависит от продолжительности данной работы), а к ней, т.е. к стрелке, приляпать окружность какого-то постоянного размера, а в ней какой-то текст или вывести значение переменной. А к этой окружности снова линия (прямая или ломаная) со стрелкой и т.д. Математический расчет (т.е. координаты вывода этих всех элементов) я уж осилю, а вот как на рабочий лист Экселя это выводить - никогда не делал. Раньше работал только с выводом значений в ячейки и не более того.
PM MAIL   Вверх
Alles
Дата 2.9.2005, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.6.2003
Где: RUSSIA

Репутация: нет
Всего: 2



Нажми на кнопку запись макроса в Екселе !
Далее создавай любую фигуру, окружность, линию. Можешь потом двигать эти объекты , переименовывать. Затем смотри в теле этого макроса что и как , там будет все. Отразятся буквально все твои действия. Исходи з этого бери нужный тебе кусок ( наприсер размер и привязка к координатам) и используй свои данные.
Имхо самый простой путь.
PM MAIL ICQ   Вверх
Trinitron
Дата 2.9.2005, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Вот!!!!!!!!!!!!
Огромное спасибо тебе, Alles!
Самое смешное - как я сам не догадался до этого smile
PM MAIL   Вверх
Trinitron
Дата 2.9.2005, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



А как можно внутрь нарисованной окружности вывести значение переменной?
PM MAIL   Вверх
Naghual
Дата 2.9.2005, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Код

ActiveSheet.Shapes("Oval_1").Select
Selection.Characters.Text = "TEST"



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 2.9.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Спасибо, Naqhual, попробую
PM MAIL   Вверх
Trinitron
Дата 2.9.2005, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Вот пробный фрагмент:

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"


Ругается на неверный параметр в предпоследней строке
PM MAIL   Вверх
Naghual
Дата 2.9.2005, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Правильно пишет. Нет у тебя овала с таким именем.

Задавать имя нужно так:
Код

ActiveSheet.Shapes.AddShape(msoShapeOval, 114#, 42#, 42#, 42#).Select
Selection.Name = "Дата1"


Это сообщение отредактировал(а) Naghual - 2.9.2005, 11:08


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 2.9.2005, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Спасибо, Naqhual, всё получилось.

А размер шрифта при выводе в окружность можно изменить?
И последний, похоже на то, вопрос: а как можно на листе эти объекты разом все удалить?

Это сообщение отредактировал(а) Trinitron - 2.9.2005, 11:20
PM MAIL   Вверх
Naghual
Дата 2.9.2005, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Через коллекцию Shapes в цикле.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 2.9.2005, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



А вот этого я не понял smile
А размер шрифта при выводе в окружность можно изменить?

Это сообщение отредактировал(а) Trinitron - 2.9.2005, 11:21
PM MAIL   Вверх
Naghual
Дата 2.9.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Что ты не понял? Объяснить как удалить?

Шрифт:
Воспользуйся методом записи макроса!
И все поймеш!


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 2.9.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



Если можно, то подскажи примером как удалить нарисованные овалы и линии
Со шрифтом разобрался
PM MAIL   Вверх
Naghual
Дата 2.9.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Код

    Dim SHP As Shape
    
    For Each SHP In ActiveSheet.Shapes
        SHP.Delete
    Next



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Trinitron
Дата 2.9.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 31.8.2005

Репутация: нет
Всего: нет



ОГРОМНОЕ тебе СПАСИБО, Naqhual, всё получилось.

Тему можно закрыть.
PM MAIL   Вверх
vaulin
Дата 24.3.2010, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.5.2006

Репутация: нет
Всего: нет



Пример простенькой программки, которая рисует линию на форме. Данный код необходимо вставить в тело формы (создать форму и нажать F7)

Код

Option Explicit
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function dwMoveTo Lib "gdi32" Alias "MoveToEx" _
    (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _
    ByVal lpPoint As Long) As Long
Private Declare Function dwLineTo Lib "gdi32" Alias "LineTo" _
    (ByVal hdc As Long, ByVal x As Integer, ByVal y As Integer) As Long
Private Declare Function dwGetDC Lib "user32" Alias "GetDC" _
    (ByVal hWnd As Long) As Long
Private Declare Function dwEllipse Lib "gdi32" Alias "Ellipse" _
    (ByVal HDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal _
    X2 As Long, ByVal Y2 As Long) As Long
Private Function Draw()
    Dim hForm As Long, hdc As Long
    hForm = FindWindow("ThunderDFrame", Me.Caption)
    hdc = dwGetDC(hForm)
    Call dwMoveTo(hdc, 10, 40, 0)
    Call dwLineTo(hdc, 150, 100)
    Call dwEllipse(HDC, 50, 50, 150, 150)
End Function
Private Sub UserForm_Click()
    Draw
End Sub




Программка рисует на форме VBA Excel линию с координатами точек (10, 40) и (150, 100) после щелчка мыши по панели формы, а также окружность. 

Это сообщение отредактировал(а) vaulin - 24.3.2010, 14:06
PM ICQ   Вверх
GWolf
Дата 14.12.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.3.2009

Репутация: нет
Всего: нет



Уважаемый Trinitron, здравствуйте!

А нельзя ли выложить пример реализации "рисовалки"?
PM MAIL   Вверх
Pavel73
Дата 30.9.2013, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 30.9.2013

Репутация: нет
Всего: нет



Помогите нужно создать таблицу в Excel. Столбцы: ФИО, Должность, Дата рождения, Несовер. дети г. р., Дата окончания контракта. Нужно что бы когда остается месяц до завершения контракта строка с человеком у которого заканчивается контракт выделялась красным цветом.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.