Объясните в чём ошибка

Программирование на Visual Basic for Applications
dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Объясните в чём ошибка

Сообщение dr.MIG » 24.01.2005 (Пн) 21:49

Проблема следующая: программа из TextBox'ов берёт числовые значения, отправляет их в Excel, строит там диаграмму, копирует её и вставляет в Word. Всё прекрасно работает, если я только запустил программу, но если я уже один раз построил диаграмму, закрыл Excel, и ещё раз попытался построить то диаграмма не строится. Вот код:

Код: Выделить всё
Sub CreateDiagram()
Clipboard.Clear   'очищаем буфер обмена
Set EApp = New Excel.Application
Set EWB = EApp.Workbooks.Open(App.Path & "\" & "file.xls")
Set EWSH = EWB.Worksheets.Add
'EApp.Visible = True
With EWSH
.Cells(1, 1).Value = "Справились"   'это для подписи в легенде
.Cells(2, 1).Value = "Не справились"   'это для подписи в легенде
.Cells(1, 2).Value = txtBad.Text   'первое значение
.Cells(2, 2).Value = txtGood.Text   'второе значение
End With
With EWB
.Charts.Add
.ActiveChart.ChartType = xl3DPie
.ActiveChart.SetSourceData Source:=Sheets(EWSH.Name).Range("A1:B2"), PlotBy:= _
        xlColumns

       ' при повторной попытке построить диаграмму почему-то
       'подпрограмма прерывается сдесь и не выполняет все ниже               'идущие операторы, а следовательно диаграмма не копируется

.ActiveChart.Location Where:=xlLocationAsObject, Name:=EWSH.Name
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Название диаграммы"
    End With
   
.ActiveChart.SeriesCollection(1).Select
.ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowPercent _
        , AutoText:=True, LegendKey:=False, HasLeaderLines:=True
.ActiveChart.PlotArea.Select
    With Selection.Border
        .Weight = xlHairline
        .LineStyle = xlNone
    End With
    With Selection.Interior
        .ColorIndex = 2
        .PatternColorIndex = 1
        .Pattern = xlSolid
    End With
.ActiveChart.ChartArea.Select
.ActiveChart.ChartArea.Copy
End With

'всё закрываем
EWB.Close False
EApp.Quit
Set EWSH = Nothing
Set EWB = Nothing
Set EApp = Nothing
End Sub


P.S. что-то я вообще не понял с какого перепуга подпрограмма обрывается в середине выполнения...[/code]
Последний раз редактировалось dr.MIG 25.01.2005 (Вт) 18:27, всего редактировалось 1 раз.
Salus populi suprema lex

АндрейБ
Бывалый
Бывалый
 
Сообщения: 276
Зарегистрирован: 18.12.2004 (Сб) 17:00
Откуда: Санкт-Петербург

Сообщение АндрейБ » 24.01.2005 (Пн) 22:36

У тебя сложная задача, но не в этом суть!
Я однажны когда то же работал с Ассеss то же увлекался всякими эксперементами с приложениями с Ворд и Ексел. У меня был большой модуль который из таблиц Акцеса заполнял Ексел-файлы и вставлял данные туда и немного форматировал.
Суть заключалась в том, что приложение работало нормально какое-то время. Но почему-то со временем, один из 7 файлов Екселя стал давать сбои в заполнении. Я сто раз проверил - код никто изменить не мог - да я его и провел многократно! Видимо из-за роста Акцес файла произошел сбои. Причем один раз выполняешь заполнение - все ок, другой раз ошибка. Я плюнул с тех пор на Акцесс и стал писать приложения на VB6! Видимо Микрософт все же гнилая контора, напишет проги - а они глючат! :D
Попробуй VB6. Я первое время боялся, но когда стала серъезная задача, написал отличную программу. Красиво, плюс я писал ее для конечного пользователя (это не один клиент) - сдела инсталятор и работает у всех нормально. А когда с Акцесрм работал, постоянно приходилось гемороется (у кого Акцес 98, 2000, ХР плюс не все элементы установлены). Голова только пухла. Приходилось самому всем настривать!!!

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

Сообщение Igor_123 » 01.02.2005 (Вт) 19:57

на каком месте обрывается?


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 1

    TopList