powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с завершением процесса Excel
5 сообщений из 5, страница 1 из 1
Проблема с завершением процесса Excel
    #39189663
mr. Shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть проблема с завершением процесса Excel после считывания данных с листа из Access. Перечитал кучу форумов наших и не наших, но решения так и не нашлось. Что бы я ни делал ничего не помогает. Привожу пример кода, может у кого-то появятся свежие идеи:

Код: vbnet
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.
Public Sub Open_Click()

Dim dlgOpenFile As Object
Dim OTT As Variant
Dim sFile As String
Dim oXL As Excel.Application, oWB As Excel.Workbook, oWS As Excel.Worksheet 

Set oXL = CreateObject("Excel.Application")

Set dlgOpenFile = Application.FileDialog(3)
  With dlgOpenFile
      .Filters.Add "Файлы Excel", "*.xls, *.xlsx, *.xlsb, *.xlsm", 1
      .InitialFileName = CurrentProject.Path
      .AllowMultiSelect = False
      .Title = "Выберите файл"
          If (.Show = -1) And (.SelectedItems.Count > 0) Then
            sFile = .SelectedItems(1)
          End If
  End With
Set dlgOpenFile = Nothing
 
If sFile = "" Then
    Exit Sub
End If

Set oWB = oXL.Workbooks.Open(sFile)
Set oWS = oWB.Sheets(1)

OTT = oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30))

Set oWS = Nothing
oWB.Close
Set oWB = Nothing
oXL.Quit
Set oXL = Nothing
...
Рейтинг: 0 / 0
Проблема с завершением процесса Excel
    #39189753
mr. ShuOTT = oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30))
Что будет с процессом, если эту строку закомментировать?
А так? OTT = oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30)) .Value
...
Рейтинг: 0 / 0
Проблема с завершением процесса Excel
    #39189797
mr. Shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),
Ваше исправление кода решило проблему. Теперь все работает корректно.

Спасибо огромное за помощь!

Только не могу понять в чем разница, т.к. моим способом данные тоже загружались в память.
...
Рейтинг: 0 / 0
Проблема с завершением процесса Excel
    #39189995
mr. ShuТолько не могу понять в чем разница, т.к. моим способом данные тоже загружались в память. Давайте порассуждаем...
Обращение к oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30)) - это неявное создание трех объектов Range.
Если написать Set OTT = oWS.Range(...), то в OTT вы получите объект Range, которому после использования надо тоже делать Nothing.

Если OTT = oWS.Range(...).Value, то Range возвращает массив значений, считает миссию выполненной и благополучно рассасывается.

А в вашем варианте Range использует значение по умолчанию (Value), но остается в памяти, ожидая других обращений к себе.

Кстати, у вас действительно 500 строк и 30 столбцов? Может проще использовать конструкцию
OTT = oWS.UsedRange.Value ?
...
Рейтинг: 0 / 0
Проблема с завершением процесса Excel
    #39190059
mr. Shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Если OTT = oWS.Range(...).Value, то Range возвращает массив значений, считает миссию выполненной и благополучно рассасывается.

А в вашем варианте Range использует значение по умолчанию (Value), но остается в памяти, ожидая других обращений к себе.

Спасибо. Теперь разобрался

Анатолий ( Киев )Кстати, у вас действительно 500 строк и 30 столбцов? Может проще использовать конструкцию
OTT = oWS.UsedRange.Value ?
Скажем, с UsedRange массив не сильно уменьшится. Но совет очень кстати.

На самом деле мне нужна определенная область листа, но ее местоположение не является постоянным. При этом данные в подавляющем большинстве случаев находятся в том диапазоне который я использую. Далее я уточняю границы диапазона и передаю его из массива в recordset.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с завершением процесса Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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