Dim oExcel As Object'Excel.ApplicationDim oBook As Object'Excel.WorkbookDim oSheet As Object'Excel.WorksheetDim oldCI As System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("en-US")
'Start a new workbook in Excel.
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add'Add data to cells of the first worksheet in the new workbook.
oSheet = oBook.Worksheets(1)
Dim i As Integer
For i = 1 To 5
oSheet.Range("A" & CStr(i)).Value = i
oSheet.Range("B" & CStr(i)).Value = i * i
Next i
Dim oChart As Object'Excel.Chart
oChart = oBook.Sheets.Add(Type:=-4109) 'Excel.XlSheetType.xlChart
oChart.ChartType = 74 'Excel.XlChartType.xlXYScatterLines
oChart.Location(Where:=1, Name:="function") ' Excel.XlChartLocation.xlLocationAsNewSheet
oChart.PlotArea.Interior.ColorIndex = 2
Dim s1 As Object'Excel.Series
s1 = oChart.SeriesCollection.NewSeries()
s1.XValues = oSheet.Range("A1:A5") ' Ошибка здесь !!!!!!!!!!!!!!!!!!!!!!!
s1.Values = oSheet.Range("B1:B5")
'Save the Workbook and quit Excel.
oBook.SaveAs("c:\Book1.xls")
If Not oBook Is Nothing Then oBook.Close(False)
oExcel.Quit()
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
возникает следующая ошибка при попытке изменить данные в объекте Series:
Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
Дело в том, что поле XValues объекта Series имеет тип System.Array, a oSheet.Range("A1:A5") имеет тип System.__ComObject . У объекта Range есть поле Value, которое возвращает массив значений. Однако код
s1.XValues = oSheet.Range("A1:A5").Value
не работает, если массив достаточно большой.
Re: VB.NET - Проблема при изменении диаграммы в Excel
M>Дело в том, что поле XValues объекта Series имеет тип System.Array, a oSheet.Range("A1:A5") имеет тип System.__ComObject . У объекта Range есть поле Value, которое возвращает массив значений. Однако код M>
M>s1.XValues = oSheet.Range("A1:A5").Value
M>
M>не работает, если массив достаточно большой.
Не поняла, правда, зачем вы добавляете ряд, один же уже есть? А так не будет работать?
s1.XValues = "=Лист1!R1C1:R5C1"' Ошибка здесь !!!!!!!!!!!!!!!!!!!!!!!
s1.Values = "=Лист1!R1C2:R5C2"
Пользователь — друг программиста!
Re[2]: VB.NET - Проблема при изменении диаграммы в Excel
От:
Аноним
Дата:
23.07.06 14:28
Оценка:
Здравствуйте, Elena_, Вы писали:
E_>Не поняла, правда, зачем вы добавляете ряд, один же уже есть?
Так надо
Задача создать несколько рядов данных различной длины.
E_>А так не будет работать? E_>
Проверял. Так не работает.
Если точнее, то ошибка не возникает, файл создается. Но если открыть файл и посмотреть данные для созданного ряда, то в поле XValues содержится
="=Лист1!R1C1:R5C1"
а нужно чтобы там было
=Лист1!R1C1:R5C1
Короче в этом случае туда передается массив из одного элемента — строки "=Лист1!R1C1:R5C1"
Re[3]: VB.NET - Проблема при изменении диаграммы в Excel
Здравствуйте, Аноним, Вы писали:
А>Проверял. Так не работает. А>Если точнее, то ошибка не возникает, файл создается. Но если открыть файл и посмотреть данные для созданного ряда, то в поле XValues содержится А>
А>="=Лист1!R1C1:R5C1"
А>
А>а нужно чтобы там было
А>
А>=Лист1!R1C1:R5C1
А>
А>Короче в этом случае туда передается массив из одного элемента — строки "=Лист1!R1C1:R5C1"
Интересно, а я проверила с Вашим кодом, работает и график рисует, и значение преобразовывается в
=Лист1!$A$1:$A$5, а для оси Y — =Лист1!$B$1:$B$5
Вообще, попробуйте записать макрос в Excel, то есть сделайте Excel видимым, доведите код до этого места, перейдите в книгу, начните запись, задайте исходные данные через пользовательский интерфейс, остановите запись и посмотрите, что получится.
Пользователь — друг программиста!
Re[4]: VB.NET - Проблема при изменении диаграммы в Excel
От:
Аноним
Дата:
26.07.06 09:12
Оценка:
E_>Вообще, попробуйте записать макрос в Excel, то есть сделайте Excel видимым, доведите код до этого места, перейдите в книгу, начните запись, задайте исходные данные через пользовательский интерфейс, остановите запись и посмотрите, что получится.
Спасибо за совет. Но дело в том, что если вставить этот код в виде макроса на Excel, то все работает. Все работает как надо даже по vb6, а вот из восьмой студии на VB.NET не работает. Видимо проблема связана со словом .NET.
Re[5]: VB.NET - Проблема при изменении диаграммы в Excel
Здравствуйте, Аноним, Вы писали:
E_>>Вообще, попробуйте записать макрос в Excel, то есть сделайте Excel видимым, доведите код до этого места, перейдите в книгу, начните запись, задайте исходные данные через пользовательский интерфейс, остановите запись и посмотрите, что получится.
А>Спасибо за совет. Но дело в том, что если вставить этот код в виде макроса на Excel, то все работает. Все работает как надо даже по vb6, а вот из восьмой студии на VB.NET не работает. Видимо проблема связана со словом .NET.
А если не код в виде макроса, а имеено только ту текстовую строку или что там запишет макрос. Я пробовала именно Ваш код, правда в VS 2003, а не 2005
Пользователь — друг программиста!
Re[6]: VB.NET - Проблема при изменении диаграммы в Excel