Excel-диаграмма в VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Игорь Обоймов
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 08.02.2005 (Вт) 13:35
Откуда: Москва

Excel-диаграмма в VB

Сообщение Игорь Обоймов » 08.02.2005 (Вт) 13:42

Построил Excel-диаграмму в VB-программе. При этом цвет секторов диаграммы устанавливается VB (а может, и Excel) автоматически. Как назначить им (секторам) свои цвета?

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 08.02.2005 (Вт) 15:04

Запиши макрос и посмотри как меняются цвета

:D

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 08.02.2005 (Вт) 15:09

Вроде так, указываешь код цвета.
Код: Выделить всё
ActiveChart.SeriesCollection(1).Interior.ColorIndex = 4

А вообще, узнавать как все эти свойства устанавливать и какие - легче через запись макроса в excel а потом смотришь код макроса в VBA (excel)

Orion
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.04.2002 (Вт) 16:12
Откуда: Москва

Сообщение Orion » 09.02.2005 (Ср) 9:41

К сожалению, в VBA (Excel) это рабтает, а в Visual Basic 6 - нет :( . Видимо библиотека, которую использует VB, оперирует несколько иными объектами ... :(

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 09.02.2005 (Ср) 11:59

Orion писал(а):Видимо библиотека, которую использует VB, оперирует несколько иными объектами ...

Как это другими! Ты как делаешь диаграмму?

Orion
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 02.04.2002 (Вт) 16:12
Откуда: Москва

Сообщение Orion » 09.02.2005 (Ср) 13:31

Сейчас под рукой нет, - завтра вылоку кусочек кода ... важно, что, то, что записывается в макрос Excel, в VB - не работает.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 09.02.2005 (Ср) 13:41

Нужно подключить Excel`вские функции:
Проект->Информация-> Выбираешь и ставишь галочку на:
Microsoft Excel 10.0 Object Librаry

Код: Выделить всё
Dim excell As Object
Dim отчет As Object
Set excell = CreateObject("Excel.Application")
Set отчет = excell.Workbooks.Add
excell.Visible = True 'видно или не видно excel  в панели задач
отчет.Worksheets(1).Cells(1, 1) =подпись1$'данные для подписи оси х
....
отчет.Worksheets(1).Cells(1, 2) = 10'значения для диаграммы
....
'значения сам дальше пишешь если надо, хоть в цикле, хоть по каждой ячейке
' в этом примере данные для построения-B1:B48, A1:A48 -  подписи оси Х
dname$ = "Имя диаграммы"
xtitle$ = "Ось Х"
razm$ = "Ось Y"
отчет.Charts.Add
отчет.ActiveChart.ChartType = xlColumnClustered
отчет.ActiveChart.SetSourceData Source:=отчет.Worksheets(1).Range("B1:B48"), PlotBy:= _
        xlColumns
    отчет.ActiveChart.SeriesCollection(1).XValues = отчет.Worksheets(1).Range("A1:A48")
    отчет.ActiveChart.Location Where:=xlLocationAsNewSheet
    With отчет.ActiveChart
        .HasLegend = False
        .HasTitle = True
        .ChartTitle.Characters.Text = dname$ 'имя диаграммы
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xtitle$ 'подпись оси Х
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = razm$ 'подпись оси Y
    End With
    отчет.ActiveChart.PlotArea.Interior.ColorIndex = xlNone
    отчет.ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
        HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
        ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
    отчет.ActiveChart.SeriesCollection(1).DataLabels.AutoScaleFont = True
    отчет.ActiveChart.SeriesCollection(1).DataLabels.Font.Size = 8 'размер шрифта значений
    отчет.ActiveChart.SeriesCollection(1).DataLabels.Font.Underline = xlUnderlineStyleNone
    отчет.ActiveChart.SeriesCollection(1).DataLabels.HorizontalAlignment = xlCenter
    отчет.ActiveChart.SeriesCollection(1).DataLabels.VerticalAlignment = xlCenter
    отчет.ActiveChart.SeriesCollection(1).DataLabels.ReadingOrder = xlContext
    отчет.ActiveChart.SeriesCollection(1).DataLabels.Position = xlLabelPositionOutsideEnd
    отчет.ActiveChart.SeriesCollection(1).DataLabels.Orientation = xlUpward
    отчет.ActiveChart.Axes(xlCategory).TickLabels.AutoScaleFont = True
    отчет.ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 6 ' шрифт подпись оси Х
    отчет.ActiveChart.Axes(xlCategory).TickLabels.Orientation = xlUpward

Ну а дальше хошь сам закрывай эксель, хошь программно


Вернуться в Visual Basic 1–6

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

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

    TopList