powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel 2007
4 сообщений из 4, страница 1 из 1
Excel 2007
    #36575608
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Помогите пожалуйста. Я перешла на 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
Excel 2007
    #36575636
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: hum_i

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


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


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

Член группы не найден. (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
Excel 2007
    #36576069
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: hum_i
> wb = CType(app.Workbooks.Add, Excel.Workbook)

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

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


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