|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
31.10.2008, 02:16 | #1 |
Пользователь
Регистрация: 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 |
31.10.2008, 03:10 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Попробуйте такой код (вдруг заработает):
Код:
А не проще ли использовать раннее связывание? Поставьте у проекта VB в меню Проект - Ссылки галочку напротив библиотеки Microsoft Excel Object Library, и объявляйте объекты Excel не как Object, а в соответствии с их типами: Dim Excel As New Excel.Application Dim WB As Excel.Workbook, Chart As Excel.Chart
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 31.10.2008 в 03:22. |
01.11.2008, 13:04 | #3 |
Пользователь
Регистрация: 18.10.2008
Сообщений: 65
|
У меня нет такой библиотеки в ссылках!
Можно её скачать где-то? или установить как-то? У меня VB 6.0 |
01.11.2008, 13:05 | #4 |
Пользователь
Регистрация: 18.10.2008
Сообщений: 65
|
Предлагаемый код тоже не работает!
|
01.11.2008, 14:23 | #5 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
- в зависимости от версии установленного пакета Office. Если Excel установлен на компьютере, библиотека должна быть в списке. Если её всё таки в списке нет, а Excel установлен, то тогда нажми Пуск - Выполнить, и введи команду Excel /regserver Если и после этого её не будет в списке, в окне Доступные ссылки (в VB) жмём Обзор и выбираем файл C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE ( тут тоже вместо OFFICE11 может быть OFFICE12 и т.п.) Короче, ставим ссылку на файл EXCEL.EXE Цитата:
|
||
01.11.2008, 14:58 | #6 |
Пользователь
Регистрация: 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 |
01.11.2008, 15:01 | #7 |
Пользователь
Регистрация: 18.10.2008
Сообщений: 65
|
Спасибо большое!
А код типа диаграммы xlLine в цифрах как записать? Может где-то можно скачать данные коды? |
01.11.2008, 15:07 | #8 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Открываете Object Browser (в VB, а если к нему так и не удалось подключить библиотеку Excel, то в редакторе VBA Excel) - открывается он нажатием F2 - и в строке поиска вводите xlLine
Нажимаете на одном из результатов поиска, и внизу панели Object Browser видите примерно следующее: Const xlLine = 4 Member of Excel.XlChartType А если там же в поиске ввести XlChartType, то в правом столбце увидите кучу констант, определяющих тип диаграммы И лучше использовать конструкцию Код:
И используйте для вставки кода в сообщение теги [CОDE] и [/CОDE] (нажмите # над окном сообщений)
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 01.11.2008 в 15:16. |
02.11.2008, 01:51 | #9 |
Пользователь
Регистрация: 18.10.2008
Сообщений: 65
|
конечно через With! Я просто крутил - вертел до этого! Спасибо!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с диаграммой | 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 |