Ошибка при экспорте в Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
onell
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 131
Зарегистрирован: 21.06.2006 (Ср) 16:04
Откуда: 2taev City

Ошибка при экспорте в Excel

Сообщение onell » 21.06.2006 (Ср) 17:01

Ситуация такая: программа выполняет некоторые расчеты и экспортирует их в Excel. При первом запуске программы всу проходит удачно, но если вычисления повторить появляется ошибка Run time error '1004' : method 'cells' of object '_global' failed, в чем может быть причина этого?

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 21.06.2006 (Ср) 17:03

Ты хотя бы код привел что ли, а то не совсем понятно что и как ты экспортируешь. Или объясни поподробнее.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.06.2006 (Ср) 17:06

В том и может быть причина этого, что надо указывать, какие cells и где.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

onell
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 131
Зарегистрирован: 21.06.2006 (Ср) 16:04
Откуда: 2taev City

Сообщение onell » 22.06.2006 (Чт) 14:18

кода много, могу выслать

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 22.06.2006 (Чт) 14:21

Конкретно код экспорта дай. Либо архивишь, и выкладываешь сюда все. Второе предпочтительнее. А кому-то высылать нет смысла.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

onell
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 131
Зарегистрирован: 21.06.2006 (Ср) 16:04
Откуда: 2taev City

Сообщение onell » 22.06.2006 (Чт) 14:23

GSerg писал(а):В том и может быть причина этого, что надо указывать, какие cells и где.

дело в том, что ошибка появляется после повторного экспорта, первый запуск проходит нормально.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.06.2006 (Чт) 14:27

Откуда, всё-таки, такая уверенность в людях...
Говорю, в чём проблема - нет, всё нормально!..
http://bbs.vbstreets.ru/viewtopic.php?t=23842
Изучи.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

onell
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 131
Зарегистрирован: 21.06.2006 (Ср) 16:04
Откуда: 2taev City

Сообщение onell » 22.06.2006 (Чт) 14:28

не могу отправлять файлы :(
Код: Выделить всё
Private Sub btnExport_Click()
Dim i As Integer
Dim j As Integer
    'создание динамического объекта-приложения
    Set xlApp = New Excel.Application
    'создание книги внутри приложения
   
    Set xlBook = xlApp.Workbooks.Add
    'создание рабочего листа книги
   
    Set xlSheet = xlBook.Worksheets(1)
    'показать рабочий лист книги
    xlSheet.Application.Visible = False
j = 1
dtFind.Recordset.MoveFirst
Do While Not dtFind.Recordset.EOF
   
    With xlSheet
       .Columns("a").ColumnWidth = 6
       .Columns("b").ColumnWidth = 20
       .Columns("c").ColumnWidth = 24
       .Columns("d").ColumnWidth = 4
       .Columns("e").ColumnWidth = 24
       .Name = "Выписка"
       .Range(Cells(1 + (j - 1) * 27, 2), Cells(1 + (j - 1) * 27, 5)).Merge
       .Cells(1 + (j - 1) * 27, 2) = "Учетная карточка"
       With .Range(Cells(1 + (j - 1) * 27, 2), Cells(1 + (j - 1) * 27, 5))
             .Font.Size = 16
             .Borders.Color = vbBlack
             .Borders.Weight = 3
             .HorizontalAlignment = xlCenter
             .VerticalAlignment = xlCenter
       End With
       .Range(Cells(2 + (j - 1) * 27, 2), Cells(2 + (j - 1) * 27, 5)).Merge
       With .Range(Cells(2 + (j - 1) * 27, 2), Cells(2 + (j - 1) * 27, 5))
             .Font.Size = 12
             .HorizontalAlignment = xlCenter
             .VerticalAlignment = xlCenter
        End With
        With .Range(Cells(4 + (j - 1) * 27, 2), Cells(21 + (j - 1) * 27, 5))
             .Font.Size = 8
             .Borders.Color = vbBlack
             .Borders.Weight = 2
        End With
        With .Range(Cells(4 + (j - 1) * 27, 3), Cells(21 + (j - 1) * 27, 5))
             .HorizontalAlignment = xlCenter
             .VerticalAlignment = xlCenter
        End With
       .Cells(2 + (j - 1) * 27, 2) = "Корпус: " & dtFind.Recordset.Fields(0) & ", Аудитория: " & dtFind.Recordset.Fields(1) & ", Имя компьютера: " & dtFind.Recordset.Fields(2)
       .Range(Cells(3 + (j - 1) * 27, 2), Cells(3 + (j - 1) * 27, 5)).Merge
       .Cells(3 + (j - 1) * 27, 2) = "IP адрес:" & dtFind.Recordset.Fields(19)
       .Cells(4 + (j - 1) * 27, 2) = "блок питания"
       .Cells(5 + (j - 1) * 27, 2) = "материнская плата"
       .Cells(6 + (j - 1) * 27, 2) = "процессор"
       .Cells(7 + (j - 1) * 27, 2) = "видеокарта"
       .Cells(8 + (j - 1) * 27, 2) = "аудиокарта"
       .Cells(9 + (j - 1) * 27, 2) = "оперативная память"
       .Cells(10 + (j - 1) * 27, 2) = "оперативная память"
       .Cells(11 + (j - 1) * 27, 2) = "оперативная память"
       .Cells(12 + (j - 1) * 27, 2) = "жесткий диск"
       .Cells(13 + (j - 1) * 27, 2) = "жесткий диск"
       .Cells(14 + (j - 1) * 27, 2) = "жесткий диск"
       .Cells(15 + (j - 1) * 27, 2) = "дисковод"
       .Cells(16 + (j - 1) * 27, 2) = "сетевая плата"
       .Cells(17 + (j - 1) * 27, 2) = "привод"
       .Cells(18 + (j - 1) * 27, 2) = "привод"
       .Cells(19 + (j - 1) * 27, 2) = "монитор"
       .Cells(20 + (j - 1) * 27, 2) = "клавиатура"
       .Cells(21 + (j - 1) * 27, 2) = "мышь"
       
       .Cells(4 + (j - 1) * 27, 3) = Trim(dtFind.Recordset.Fields(3))
       .Cells(5 + (j - 1) * 27, 3) = Trim(dtFind.Recordset.Fields(4))
       .Cells(6 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(5)
       .Cells(7 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(6)
       .Cells(8 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(7)
       .Cells(9 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(8)
       .Cells(10 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(9)
       .Cells(11 + (j - 1) * 27, 3) = Trim(dtFind.Recordset.Fields(37))
       .Cells(12 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(10)
       .Cells(13 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(11)
       .Cells(14 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(36)
       .Cells(15 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(12)
       .Cells(16 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(13)
       .Cells(17 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(14)
       .Cells(18 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(15)
       .Cells(19 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(16)
       .Cells(20 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(17)
       .Cells(21 + (j - 1) * 27, 3) = dtFind.Recordset.Fields(18)
       
       .Cells(4 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(20)
       .Cells(5 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(21)
       .Cells(6 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(22)
       .Cells(7 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(23)
       .Cells(8 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(24)
       .Cells(9 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(25)
       .Cells(10 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(26)
       .Cells(11 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(39)
       .Cells(12 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(27)
       .Cells(13 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(28)
       .Cells(14 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(38)
       .Cells(15 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(29)
       .Cells(16 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(30)
       .Cells(17 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(31)
       .Cells(18 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(32)
       .Cells(19 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(33)
       .Cells(20 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(34)
       .Cells(21 + (j - 1) * 27, 5) = dtFind.Recordset.Fields(35)
       For i = 3 To 21
          .Cells(i + (j - 1) * 27, 4) = "S/N"
       Next i
       
    End With
    dtFind.Recordset.MoveNext
    j = j + 1
Loop
xlSheet.Application.Visible = True

End Sub

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 22.06.2006 (Чт) 14:39

Диагноз доктора GSerg'а подтверждается:
Код: Выделить всё
       .Range(Cells(1 + (j - 1) * 27, 2), Cells(1 + (j - 1) * 27, 5)).Merge
       .Cells(1 + (j - 1) * 27, 2) = "Учетная карточка"

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 22.06.2006 (Чт) 14:44

При всем уважении к автору, неплохо бы еще зациклить...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 22.06.2006 (Чт) 14:50

и конструкция

Код: Выделить всё
xlSheet.Application.Visible


вызывает некотурую оторопь...
подписи нет и не будет


Вернуться в Visual Basic 1–6

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

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

    TopList  
cron