Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 31.10.2008, 02:16   #1
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
Печаль Помогите пожалуйста с диаграммой!



Пытаюсь построить Диаграмму на VB!
Записал рекордером построение на VBA, сохранил, ввёл объекты на VB и вот что получилось:

Sub Main()
Dim oExcel As Object
Dim oBook As Object
Dim Sheets As Object
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("C:\Конструкт ор.xls")

oBook.Charts.Add
oExcel.Visible = True
Stop oBook.ActiveChart.ChartType = xlPieExploded
oBook.ActiveChart.SetSourceData Source:=Sheets("Конструктор").Range ( _
"AM16,BR16,CW16,EB16,FG16"), PlotBy:=xlRows
oBook.ActiveChart.SeriesCollection(1).XVa lues = _
"={""Однотариф."",""Тариф 1"",""Тариф 2"",""Тариф 3"",""Тариф 4""}"
oBook.ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Отношение тарифов"
With oBook.ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Отношение тарифов"
End With
oBook.ActiveChart.HasLegend = False
End Sub

!Синим отметил добавленное!

Модуль останавливается там, где я добавил красный STOP
До этого открывает книгу и добовляет поле для диаграммы, а потом пишет Type mismatch на строку oBook.ActiveChart.ChartType = xlPieExploded
Gawwws вне форума
Старый 31.10.2008, 03:10   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте такой код (вдруг заработает):

Код:
Sub Main()
    Dim oExcel As Object, oBook As Object, Sheets As Object
    Set oExcel = CreateObject("Excel.Application")
    Set oBook = oExcel.Workbooks.Open("C:\Конструктор.xls")
    oExcel.Visible = True
    Set Chart = oBook.Charts.Add
    With Chart
        .ChartType = 69
        .SetSourceData Source:=Sheets("Конструктор").Range("AM16,BR16,CW16,EB16,FG16"), PlotBy:=1
        .SeriesCollection(1).XValues = "={""Однотариф."",""Тариф 1"",""Тариф 2"",""Тариф 3"",""Тариф 4""}"
        .Location Where:=1, Name:="Отношение тарифов"
        .HasTitle = True
        .ChartTitle.Characters.Text = "Отношение тарифов"
        .HasLegend = False
    End With
End Sub

А не проще ли использовать раннее связывание?
Поставьте у проекта VB в меню Проект - Ссылки галочку напротив библиотеки Microsoft Excel Object Library, и объявляйте объекты Excel не как Object, а в соответствии с их типами:
Dim Excel As New Excel.Application
Dim WB As Excel.Workbook, Chart As Excel.Chart

Последний раз редактировалось EducatedFool; 31.10.2008 в 03:22.
EducatedFool вне форума
Старый 01.11.2008, 13:04   #3
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
По умолчанию

У меня нет такой библиотеки в ссылках!
Можно её скачать где-то? или установить как-то?
У меня VB 6.0
Gawwws вне форума
Старый 01.11.2008, 13:05   #4
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
По умолчанию

Предлагаемый код тоже не работает!
Gawwws вне форума
Старый 01.11.2008, 14:23   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
У меня нет такой библиотеки в ссылках!
Библиотека Excel в списке ссылок имеет название Microsoft Excel 11.0 Object Library (или, например, Microsoft Excel 12.0 Object Library)
- в зависимости от версии установленного пакета Office.

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

Если её всё таки в списке нет, а Excel установлен, то тогда нажми Пуск - Выполнить, и введи команду Excel /regserver

Если и после этого её не будет в списке, в окне Доступные ссылки (в VB) жмём Обзор и выбираем файл C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE ( тут тоже вместо OFFICE11 может быть OFFICE12 и т.п.)

Короче, ставим ссылку на файл EXCEL.EXE

Цитата:
Предлагаемый код тоже не работает!
На какой строке вылетает ошибка?
EducatedFool вне форума
Старый 01.11.2008, 14:58   #6
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
По умолчанию

Так работает - разобрался:

Sub Main()
Dim oExcel As Object, oBook As Object, Sheets As Object
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("C:\BQuark.0. 3\Конструктор.xls")
Set Sheets = oBook.Sheets("Конструктор")
Set Chart = oBook.Charts.Add
Chart.chartType = 69
Chart.SetSourceData Source:=Sheets.Range("AM16:AM20"), PlotBy:=5
Chart.SeriesCollection(1).XValues = "={""Однотариф."",""Тариф 1"",""Тариф 2"",""Тариф 3"",""Тариф 4""}"
Chart.Location Where:=1, Name:="Отношение тарифов"
Chart.HasTitle = True
Chart.ChartTitle.Characters.Text = "Отношение тарифов"
Chart.HasLegend = False
Chart.SeriesCollection(1).ApplyData Labels AutoText:=True, LegendKey:= _
False, HasLeaderLines:=True, ShowSeriesName:=False, ShowCategoryName:= _
True, ShowValue:=True, ShowPercentage:=True, ShowBubbleSize:=False
oExcel.Visible = True
End Sub
Gawwws вне форума
Старый 01.11.2008, 15:01   #7
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
По умолчанию

Спасибо большое!
А код типа диаграммы xlLine в цифрах как записать?

Может где-то можно скачать данные коды?
Gawwws вне форума
Старый 01.11.2008, 15:07   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Открываете Object Browser (в VB, а если к нему так и не удалось подключить библиотеку Excel, то в редакторе VBA Excel) - открывается он нажатием F2 - и в строке поиска вводите xlLine

Нажимаете на одном из результатов поиска, и внизу панели Object Browser видите примерно следующее:

Const xlLine = 4
Member of Excel.XlChartType

А если там же в поиске ввести XlChartType, то в правом столбце увидите кучу констант, определяющих тип диаграммы

И лучше использовать конструкцию
Код:
With Chart
         ...........
End With
Работать быстрее будет...

И используйте для вставки кода в сообщение теги [CОDE] и [/CОDE] (нажмите # над окном сообщений)

Последний раз редактировалось EducatedFool; 01.11.2008 в 15:16.
EducatedFool вне форума
Старый 02.11.2008, 01:51   #9
Gawwws
Пользователь
 
Регистрация: 18.10.2008
Сообщений: 65
По умолчанию

конечно через With! Я просто крутил - вертел до этого! Спасибо!
Gawwws вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с диаграммой maxic Microsoft Office Excel 0 02.10.2008 17:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44
Помогите с диаграммой в Excel Aaz38 Microsoft Office Excel 1 24.12.2007 11:40