Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel 2007 / 4 сообщений из 4, страница 1 из 1
13.04.2010, 10:06
    #36575608
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007
Добрый день!

Помогите пожалуйста. Я перешла на VB 2008. А у меня есть приложение, в котором используется Excel. В приложении я выгружаю данные из запроса в Excel-ий файл. В Add Reference я добавила Excel 2007. Появились какие то ошибки. Помогите разобраться
Variable 'app' is used before it has been assigned a value. A null reference exception could result at runtime.

Вот мой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Imports System.Data
Imports System.Data.OracleClient
Imports System.Data.OracleClient.OracleDataReader
Imports System.Data.OracleClient.OracleParameterCollection
Imports Excel
'Imports Excel.XlHAlign
'Imports Excel.XlVAlign

Public Class AnkData

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim app As Excel.Application
        Dim wb As Excel.Workbook
        Dim ws As Excel.Worksheet
        wb = app.Workbooks.Add
        ws = wb.Worksheets( 1 )
      
        Dim commIMEI As OracleCommand = New OracleCommand("select t.msisdn, t.rec_type, t.start_time, t.dialed, t.imei from calls t " & _
"where t.imei like :IMEI " & _
"and t.start_time>=:START_DATE " & _
"and t.start_time<=to_date(:END_DATE)+1 " & _
"order by t.msisdn, t.start_time", conn)
        commIMEI.CommandType = CommandType.Text

        Dim im, ps, pe As New OracleClient.OracleParameter
        im.ParameterName = ":IMEI"
        im.Direction = ParameterDirection.Input
        im.OracleType = OracleType.Number
        im.Value = TextBox1.Text
        commIMEI.Parameters.Add(im)

        ps.ParameterName = ":START_DATE"
        ps.Direction = ParameterDirection.Input
        ps.OracleType = OracleType.DateTime
        ps.Value = DTP1.Text
        commIMEI.Parameters.Add(ps)

        pe.ParameterName = ":END_DATE"
        pe.Direction = ParameterDirection.Input
        pe.OracleType = OracleType.DateTime
        pe.Value = DTP2.Text
        commIMEI.Parameters.Add(pe)

        Dim dr As OracleDataReader
        dr = commIMEI.ExecuteReader

        ws.Cells( 4 ,  2 ).value = "Информация по IMEI: " + im.Value + " за период " + ps.Value + " по " + pe.Value
        ws.Cells( 7 ,  2 ).value = "Номер телефона:"
        ws.Cells( 7 ,  3 ).value = "Тип звонка"
        ws.Cells( 7 ,  4 ).value = "Дата/Время"
        ws.Cells( 7 ,  5 ).value = "Направление"
        ws.Cells( 7 ,  6 ).value = "IMEI"

        With ws
            .Range("B4").Font.Bold = True
            .Range("B7", "F7").ColumnWidth =  20 
            .Range("B7", "F7").Font.Bold = True
            '.Range("B7", "F7").HorizontalAlignment = xlHAlignCenter
            '.Range("B7", "F7").VerticalAlignment = xlVAlignCenter
        End With
        Dim pl, i As Long
        i =  8 
        If dr.HasRows Then
            Do While dr.Read()
                ws.Cells(i,  2 ).value.NumberFormat = "#"
                ws.Cells(i,  3 ).value = dr( 1 )
                If pl <> dr( 0 ) Then
                    ws.Cells(i,  2 ).value = dr( 0 )
                    pl = dr( 0 )
                End If
                ws.Cells(i,  4 ).value = dr( 2 )
                ws.Cells(i,  5 ).value.NumberFormat = "#"
                ws.Cells(i,  5 ).value = dr( 3 )
                ws.Cells(i,  6 ).value.NumberFormat = "#"
                ws.Cells(i,  6 ).value = dr( 4 )
                i = i +  1 
            Loop
        Else : ws.Cells(i,  2 ).value = "IMEI: " + im.Value + " Такого IMEI в системе не существует"
        End If
        'ws.Range(ws.Cells(7, 2), ws.Cells(i, 6)).Borders.LineStyle = xlEdgeLeft
        ws.Range(ws.Cells( 8 ,  2 ), ws.Cells(i,  2 )).Font.Bold = True
        dr.Close()
        app.Visible = True
    End Sub
End Class	
...
Рейтинг: 0 / 0
13.04.2010, 10:14
    #36575636
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007
> Автор: hum_i

А кто будет делать
Код: plaintext
Set app = CreateObject("Excel.Application")
или как оно там в VB2008?


Не знаю как там в америке, а у нас, управдом - друг человека (с) Бриллиантовая рука


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.04.2010, 12:01
    #36576007
hum_i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007
Я нашла код,
До запуска не дает никаких ошибок. А при запуске проги, при работе, дает ошибку

Член группы не найден. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) и ссылается на эту строку
Код: plaintext
wb = CType(app.Workbooks.Add, Excel.Workbook)

Вот часть кода, где объявляется Excel

Код: plaintext
1.
2.
3.
4.
5.
Dim app As Excel.Application
             Dim wb As Excel.Workbook
             Dim ws As Excel.Worksheet
             app = CType(CreateObject("Excel.Application"), Excel.Application)
             wb = CType(app.Workbooks.Add, Excel.Workbook)
             ws = CType(wb.Worksheets( 1 ), Excel.Worksheet)

Помогите разобраться с ошибкой?
...
Рейтинг: 0 / 0
13.04.2010, 12:19
    #36576069
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007
> Автор: hum_i
> wb = CType(app.Workbooks.Add, Excel.Workbook)

А обязательно делать приведение типов?
вообще я не знаю и лучше будет обратится сюда

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel 2007 / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]