выгрузка Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

выгрузка Excel

Сообщение dub » 27.09.2004 (Пн) 11:44

Есть код:
Код: Выделить всё
Option Explicit
Dim db As Database
Dim rs As Recordset
Dim objExcel As Excel.Application

Private Sub cmdZakaz_Click()
  Dim i As Integer
 
  Screen.MousePointer = vbHourglass
  Set db = OpenDatabase(App.Path & "\base.mdb")
  Set rs = db.OpenRecordset("SELECT * FROM [Zakaz] ")
  Set objExcel = New Excel.Application
 
  objExcel.Workbooks.Open ("c:\1.xls")

  With objExcel '.ActiveWorkbook.ActiveSheet
    .Range("C16").CopyFromRecordset rs
    .Range("B16:G" & rs.RecordCount + 15).Borders.LineStyle = 1
    .Range("D16:D" & rs.RecordCount + 15).HorizontalAlignment = xlHAlignCenter
  End With

  EndInvoice rs.RecordCount + 16
 
  objExcel.ActiveWorkbook.Save
  objExcel.ActiveWorkbook.Close
 
  objExcel.Quit
  Set objExcel = Nothing
  db.Close
End Sub


Sub EndInvoice(endline As Integer)
With objExcel

.Cells(endline, 6).Value = ""
.Cells(endline, 6).Font.Bold = True
.Cells(endline, 6).Font.Size = 10
.Cells(endline, 6).HorizontalAlignment = xlHAlignRight

.Cells(endline + 1, 6).Value = ""
.Cells(endline + 1, 6).Font.Bold = True
.Cells(endline + 1, 6).Font.Size = 10
.Cells(endline + 1, 6).HorizontalAlignment = xlHAlignRight

End With
End Sub


Не выгружается из памяти excel... в чем проблема?

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 27.09.2004 (Пн) 11:49

objExcel.Quit ИМХО лишнее - попробуй убрать.

А сам Ёксель я лично предпочитаю открывать так:
Код: Выделить всё
Function GetExcel() As Object

On Error Resume Next

Set GetExcel = GetObject(, "Excel.Application")
If Err.Number <> 0 Then Set GetExcel = CreateObject("Excel.Application")
Err.Clear

End Function
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Сообщение dub » 27.09.2004 (Пн) 11:54

ZlydenGL писал(а):objExcel.Quit ИМХО лишнее - попробуй убрать.


Висит....

NetVille
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2004 (Ср) 9:13
Откуда: Альфа центавра знаешь? Тамошние мы.

Сообщение NetVille » 27.09.2004 (Пн) 12:16

Попробуй явно указать параметры objExcel.Close:
objExcel.Close (SaveChanges, FileName, RouteWorkbook)
И перед objExcel.Quit поставь objExcel.DisplayAlerts = False.
Удачи! :)

Olga
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 08.09.2004 (Ср) 8:49
Откуда: Москва

Сообщение Olga » 27.09.2004 (Пн) 12:34

Если ты устанавливаешь объект SET, то необходимо по завершении уничтожать объект, иначе он продолжает висеть в памяти. Делается это так:
SET objExcel = Nothing

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Сообщение dub » 27.09.2004 (Пн) 12:37

Olga писал(а):Если ты устанавливаешь объект SET, то необходимо по завершении уничтожать объект, иначе он продолжает висеть в памяти. Делается это так:
SET objExcel = Nothing


все так и делается только ни чего не выгружается
полностью выгружается при закрытии всей программы

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Сообщение dub » 27.09.2004 (Пн) 13:03

Если убрать из кода все упоминания БД то Excel выгружается нормально, в противном случае висит. Set rs=Nothing И Set db=Nothing не помогает.
Что не так может быть?

NetVille
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2004 (Ср) 9:13
Откуда: Альфа центавра знаешь? Тамошние мы.

Re: выгрузка Excel

Сообщение NetVille » 27.09.2004 (Пн) 13:07

dub писал(а):Если убрать из кода все упоминания БД то Excel выгружается нормально, в противном случае висит. Set rs=Nothing И Set db=Nothing не помогает.
Что не так может быть?

А rs.Close перед Set rs=Nothing не поможет? Где-то так:
Код: Выделить всё
  objExcel.Quit
  Set objExcel = Nothing
  rs.Close
  Set rs = Nothing
  db.Close
  Set db = Nothing

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Re: выгрузка Excel

Сообщение dub » 27.09.2004 (Пн) 13:16

NetVille писал(а):А rs.Close перед Set rs=Nothing не поможет?

не помогает

NetVille
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 04.08.2004 (Ср) 9:13
Откуда: Альфа центавра знаешь? Тамошние мы.

Сообщение NetVille » 27.09.2004 (Пн) 13:47

Странно :roll:
У меня твой код работает, и Excel выгружается сразу после Set objExcel = Nothing...
В Project -> References стоят галки у:
Microsoft DAO 3.6 Object library и
Microsoft Excel 8.0 Object library.
А у тебя?

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Сообщение dub » 27.09.2004 (Пн) 14:11

NetVille писал(а):Странно :roll:
У меня твой код работает, и Excel выгружается сразу после Set objExcel = Nothing...
В Project -> References стоят галки у:
Microsoft DAO 3.6 Object library и
Microsoft Excel 8.0 Object library.
А у тебя?

Microsoft DAO 3.6 Object library и
Microsoft Excel 9.0 Object library.

Как ни странно скопировал код в другой проект и там все работает, но в этом не хочет
убрал функцию endinvoice выгружается.
попробовал в endinvoice проделать все с нуля (т.е. подключение excel) и опять ВИСИМ
в чем дело сам понять не могу

dub
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 13.01.2003 (Пн) 9:18
Откуда: Russia

Сообщение dub » 27.09.2004 (Пн) 15:02

Все!

нашел в чем дело: ошибка в вызове функции "сумма прописью"
всем спасибо

тема закрыта


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

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

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

    TopList