powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / После закрытия Excel.Application в процессах подвисает Excel.EXE
2 сообщений из 27, страница 2 из 2
После закрытия Excel.Application в процессах подвисает Excel.EXE
    #39440925
Leprottoне понял почему ругается на
Код: vbnet
1.
Dim wbkExcel As Excel.Workbook

Такое объявление требует подключения библиотеки Excel в референсах. Вы этого не сделали - и правильно.
авторесли вся задача в чтении определенной ячейки с листа
нет, в ячейке R57 контрольное значение. Если оно корректно, то далее импорт данных из трех листов. Еще раз. Прислушайтесь к нашим с Akina советам. Если обращение к файлу Excel предполагает только чтение, то лучше это делать средствами SQL.

PS. Строка sFileName = sFolder & "\" & sFile у вас не в том месте. Надо после Do While sFile <> ""
...
Рейтинг: 0 / 0
После закрытия Excel.Application в процессах подвисает Excel.EXE
    #39441126
Leprotto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ) и Akina, советы уловил, но не все.
C прочтением ФАК про MoveLast понимание не пришло ((
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
Sub importTESTcorrect()
   Dim sFile, sPath, sFileName, sFolder
   Dim idPreCon As Long
   Dim rst As Recordset
   Dim fd As FileDialog
   Dim appExcel As Object
   Dim wbkExcel 'As Excel.Workbook
  
   Set fd = Application.FileDialog(msoFileDialogFolderPicker)
   With fd
      If .Show = False Then Exit Sub
      .AllowMultiSelect = False
      sFolder = .SelectedItems(1)
   End With
   sPath = sFolder & "\" & "*.xlsm"
   sFile = Dir(sPath)
  Set appExcel = CreateObject("excel.application")
  
    Do While sFile <> ""
      sFileName = sFolder & "\" & sFile
      Set wbkExcel = appExcel.Workbooks.Open(sFileName)
      
      'idPreCon = wbkExcel.Worksheets("Функции").Range("R57").Value ЗАМЕНИТЬ НА:
      idPreCon = CurrentDb.OpenRecordset("SELECT * FROM [Функции$R57:R57] IN '" & sFileName & "' [Excel 12.0;HDR=NO;ImEx=1]").Fields(0)
      
      Set rst = CurrentDb.OpenRecordset("SELECT * FROM tPrescripts WHERE idPrescript = " & CStr(idPreCon))
      wbkExcel.Close False
        
        'rst.MoveLast
        If rst.RecordCount = 0 Then
        'импорт с первого листа
          Call DoCmd.TransferSpreadsheet(acImport, acSpreadsheetTypeExcel12, _
              "tPrescripts", sFileName, True, "requisites")
        'аналогичный импорт со второго листа ...
        'аналогичный импорт с третьего листа ...
        Else
          MsgBox "уже есть"
        End If
        
      sFile = Dir
    Loop
  appExcel.Quit
End Sub


При добавлении rst.MoveLast ругается (3021 текущая запись не найдена).
Без - данные из эксель в tPrescripts вносятся, но не в конец таблицы
...
Рейтинг: 0 / 0
2 сообщений из 27, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / После закрытия Excel.Application в процессах подвисает Excel.EXE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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