powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выгружается из памяти Exel !!!
7 сообщений из 7, страница 1 из 1
Не выгружается из памяти Exel !!!
    #32063187
dima_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
стандартный код для работы с екселем из бейсика
Dim apXls as Excel.Application
Set apXls = CreateObject("Excel.Application")
далее некие действия
................
потом
apXls.Quit
Set apXls = Nothing
все ништяк ексель закрывается, только продолжает при этом висеть в памяти пока я не выйду из своего приложения.
Что за ебть ? :)
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32063374
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мож так apXls.close после Set apXls = Nothing
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32063481
dima_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не не получается, пробовал
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32063549
uchastik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гарантаровано что у тебя остались неубитые переменные.
Если хочешь могу прислать пример процедуры кторая переносит Recordset в Exel.
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32063815
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи код
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32063848
uchastik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Sub ImportVExcel(Dannie As Recordset, Optional MeForm As Form = Empty, Optional CloumsFormat As Integer, Optional strArrayCloumsName As Variant = Empty, Optional strSheetName As String = "", Optional recMyRecordset As Variant = Empty, Optional bulSUM As Boolean = False)
On Error GoTo ErrHandler
Dim i As Integer
Dim e As Integer
Dim Zagolovki(200) As String
Dim strSheet As String
Dim m As Integer
Dim NumFields As Integer
Dim intRecordCount As Integer
Dim rec As New Recordset
If Dannie.BOF And Dannie.EOF Then
Msg "Импорт в Excel не выполнен, нет данных !"
Exit Sub
End If
intRecordCount = Dannie.RecordCount
If Not IsEmpty(MeForm) Then
frmProces.Show vbModeless, MeForm
frmProces.Label1.Caption = "Начинаем перенос данных"
DoEvents
End If
If IsEmpty(strArrayCloumsName) Then
For m = 0 To Dannie.Fields.Count - 1
Zagolovki(m) = Dannie.Fields(m).Name
Next m
Else
For m = 0 To UBound(strArrayCloumsName)
Zagolovki(m) = strArrayCloumsName(m)
Next m
End If
Dim xlFail As Object
Set xlFail = CreateObject("Excel.Application")
xlFail.Workbooks.Add
If intRecordCount < 50 Then xlFail.Visible = True
strSheet = Replace(strSheetName, " ", "")
strSheet = Replace(strSheet, "]", "")
strSheet = Replace(strSheet, "[", "")
strSheet = Replace(strSheet, "/", "")
strSheet = Replace(strSheet, "\", "")
strSheet = Replace(strSheet, "*", "")
strSheet = Replace(strSheet, "?", "")
strSheet = Left(strSheet, 31)
With xlFail.ActiveSheet
If Not strSheetName = "" Then .Name = strSheet
For i = 1 To Dannie.Fields.Count
.Cells(1, i).Value = Zagolovki(i - 1)
.Cells(1, i).Font.Bold = True
.Cells(1, i).BorderAround ColorIndex:=1, Weight:=3
.Cells(1, i).HorizontalAlignment = 3
.Cells(1, i).Interior.Color = RGB(32, 255, 100)
Dannie.MoveFirst
NumFields = intRecordCount + 1
For m = 2 To NumFields
.Cells(m, i).Value = Dannie.Fields(i - 1).Value
.Cells(m, i).BorderAround ColorIndex:=1, Weight:=2
Dannie.MoveNext
Next m
If Not IsEmpty(recMyRecordset) Then
For e = 0 To UBound(recMyRecordset)
Set rec = recMyRecordset(e)
rec.MoveFirst
If Not rec.BOF And Not rec.EOF Then
For m = NumFields + 1 To rec.RecordCount + NumFields
.Cells(m, i).Value = ПроверкаNull(rec.Fields(i - 1).Value)
.Cells(m, i).BorderAround ColorIndex:=1, Weight:=2
.Cells(m, i).Interior.ColorIndex = 34 + (e * 2)
rec.MoveNext
Next m
NumFields = NumFields + rec.RecordCount
End If
Next
End If
If bulSUM Then
NumFields = NumFields + 1
Select Case i
Case 1
.Cells(NumFields, i).Value = "SUM"
Case Is > CloumsFormat
.Cells(NumFields, i).FormulaR1C1 = "=SUM(R[-" & NumFields - 2 & "]C:R[-1]C)"
'.Cells(NumFields + 1, i).NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
Case Else
End Select
.Cells(NumFields, i).BorderAround ColorIndex:=1, Weight:=2
.Cells(NumFields, i).Interior.Color = RGB(225, 210, 225)
End If
If i > CloumsFormat Then
.Columns(i).NumberFormat = "#,##0_ ;[Red]-#,##0 "
Else
.Columns(i).NumberFormat = "@"
End If
.Columns(i).AutoFit
If Not IsEmpty(MeForm) Then frmProces.Label1.Caption = "Перенесено " & CInt((100 / Dannie.Fields.Count) * i) & " %"
DoEvents
Next i
End With
If Not IsEmpty(MeForm) Then frmProces.Hide
xlFail.Visible = True
Set xlFail = Nothing
Exit Sub

ErrHandler:
Set xlFail = Nothing
If Not IsEmpty(MeForm) Then frmProces.Hide
Msg "Импорт в Excel не выполнен, произошла ошибка!" & err.Description
End Sub
...
Рейтинг: 0 / 0
Не выгружается из памяти Exel !!!
    #32064390
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private Sub Form_Load()
Dim xlFail As Object
Set xlFail = CreateObject("Excel.Application")
xlFail.Workbooks.Add
xlFail.Visible = True
MsgBox ""
xlFail.quit
Set xlFail = Nothing
End Sub

работает однозначно, и все выгружается и в памяти не висит и при открытой форме
у тебя же в первом примере вроде так и было? а вот во втором не так
xlFail.Close ты ну никак не мог сделать, потому как нет такого метода у этого объекта.
это я прогнал
только Quit
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выгружается из памяти Exel !!!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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