|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Добрый день экспертное сообщество. Выручите пожалуйста хорошим советом. У меня тривиальная как казалось бы задача, с листа excel срисовать данные в таблицу Access. Штука в том, что на листе шапка, это такой документик. Шапку нужно обойти. Ну это возможно, можно ее почикать, можно диапазон считываемых данных указать, есть способы. Но! проблема в том, что всякий раз, когда я поправляю содержимое листа (ну к примеру подписываю столбцы) я не могу выйти из excel, этот процесс намертво виснет в системе и повторное выполнение процедуры валится в ошибку, делается еще одна копия процесса в памяти. Голову уже сломал, ну что не так-то? Dim XL As Excel.Application, WB As Excel.Workbook, WS As Excel.Worksheet Set WB = XL.Workbooks.Open(sFile) Set WS = WB.Worksheets("Лист1") WS.Range(Cells(10.1), Cells(11, 11)) = "" - уберу заголовки (а что, нельзя?) WB.Close SaveChanges:=False Уже все что можно пишу, все перепробовал Set WB = Nothing процедура заканчивается, ошибок нет, XL.Quit открываю процессы - висит голубчик Set XL = Nothing повторное выполнение процедуры невозможно Хорошо, ребята, на форуме нашел способ чтения записей с листа excel, вот такой - db.Execute "INSERT INTO Din(Data,oTime,Stol,FName,Tab1C) SELECT F1,F2,F3,F11,F10 FROM [Лист1$A11:K" & i & "] IN '" & sFile & "' [Excel 8.0;HDR=Yes,IMEX=1]" Работает отлично, но вот эти F1,F2,F3... это названия полей листа, они не подряд, их нужно было подписать (вот почему приходится корректировать содержимое листа). В примере, откуда я взял это выражение после SELECT стояло *, то есть все поля. Умные люди говорили что признак HDR это как раз индикатор, какие названия полей выбирать, свои или экскльные. Но кто-нибудь может мне сказать, КАК ОБРАТИТЬСЯ к этим полям? Какой формат? В итоге у меня задача, взять данные с листа начиная с 12 строки и вниз до упора, все записи какие есть, но столбцы не подряд и не все. В моем примере маленькая i - это как раз количество строк на листе с данными, пришлось считать. Если не считать и брать все чохом, то попадет шляпа (шапка) листа. Простите великодушно за большой текст, буду признателен за два совета - как отцепиться от процесса Excel и как обратиться к полям таблицы Excel по их родным названиям в предложении " INSERT INTO Din(Data,oTime,Stol,FName,Tab1C) SELECT F1,F2,F3,F11,F10 FROM " вот те, между SELECT и FROM, которые мне пришлось колхозить своими. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 17:40 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968, .. Xl. Quit От родителей программы более подробно тут: тут Но думаем вы и сами поймёте куда вставить данное коротенькое выражение) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 19:47 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Если не поможет, попытайтесь объявить xl не просто as Excel. Application, а как as New Excel. Application ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 19:57 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
И если совсем ничего не помогает, то: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 20:13 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968, может A11 переделать на А12? в выражении "...FROM [Лист1$A11:K" & i & "] IN..." HDR=Yes - помоему это первая строка заголовок(т.е. имя столбца), если false - все импортируемые данные - данные "HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite. Эксель висит, если в процедуре ошибка и код через эти строки Код: vbnet 1. 2.
не прошел - нужно сделать обработчик ошибок и принудить код через эти строки пройти. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 22:17 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2020, 22:39 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
alecko MSerg1968, может A11 переделать на А12? в выражении "...FROM [Лист1$A11:K" & i & "] IN..." HDR=Yes - помоему это первая строка заголовок(т.е. имя столбца), если false - все импортируемые данные - данные "HDR=Yes;" indicates that the first row contains columnnames, not data. "HDR=No;" indicates the opposite. Эксель висит, если в процедуре ошибка и код через эти строки Код: vbnet 1. 2.
не прошел - нужно сделать обработчик ошибок и принудить код через эти строки пройти. Не, я проверял, пошагово, по F8 смотрел строка за строкой, точно проходит через это место. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 02:12 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968, Если проходит, то попробуйте грохнуть не экземпляр объекта типа xl. Quit а самый нижнеуровневый объект приложения Excel, прямо так и попробуйте: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 02:23 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Сергей Лалов MSerg1968, Если проходит, то попробуйте грохнуть не экземпляр объекта типа xl. Quit а самый нижнеуровневый объект приложения Excel, прямо так и попробуйте: Код: vbnet 1.
Серег, пробовал, ничего не работает. Пришлось в тупую вкорячить taskkill вот так - sTaskName = "EXCEL.EXE" TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True) Процесс убивается, норм, даже кстати под обычным пользователем тоже, это некритичный несистемный, так что пользователь его убивает, что важно. НО! Полная лажа. Сразу допустим повторяю процедуру, и вот, на строке WS.Range(Cells(10.1), Cells(11, 11)) = "" это все летит под откос с ошибкой "The remote server machine does not exist or unavailable" То есть один прогон, нормально, второй следом - фиг! Excel закрыт. Нужно подождать, желательно закрыть Access или базу. Я понятия не имею, что с этим делать. Почему повторный прогон криво запускает excel, что это такое... Думал, нужно другой файл выбрать - результат тот же, что кстати интересно, я думал, может сам файл где-то завис. Но он нормально открывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 04:30 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
авторТо есть один прогон, нормально, второй следом - фиг! Excel закрыт. Нужно подождать, желательно закрыть Access или базу. Я понятия не имею, что с этим делать. Почему повторный прогон криво запускает excel, что это такое... Думал, нужно другой файл выбрать - результат тот же, что кстати интересно, я думал, может сам файл где-то завис. Но он нормально открывается. У меня точно такое же было. После работы с Excel его экземпляр оставался висеть в памяти. Даже принудительное закрытие этого экземпляра вручную не всегда помогало. Ставил после работы команду закрытия Access, а потом входил в программу заново. Из личного опыта. Заметил, что такое случается, если одновременно использовать раннее (через референсы) и позднее связывание с библиотекой Excel. Недавно одну программу полностью переписал на позднее связывание - проблема исчезла. И вопрос. У Вас есть Код: vbnet 1.
а где Код: vbnet 1.
Или Вы считаете, что он не нужен? И рекомендую прочесть Как из программы Access снять процесс возможно пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 09:29 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Joss если одновременно использовать раннее (через референсы) и позднее связывание с библиотекой Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 09:34 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Для начала: Код: plaintext 1. 2.
Скорее всего какое-нибудь диалоговое окно открыто. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 12:29 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
А почему не выделить, с Ctrl(или сделать в Ёкселе формочку,в которой флажками отметить) подлежащие копированию поля ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 12:36 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Alibek B. Будет видно, из-за чего процесс висит. все объекты и работа с их методами должна происходить непосредственно от полученного объекта сервера автоматизации (Application). Обращения к объектам, напрямую не созданным от текущего объекта сервера автоматизации, порождает дополнительные сервера, к которым из кода нет доступа. Они и остаются "висеть" в задачах. Как-то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 13:35 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
court MSerg1968 Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2020, 13:51 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Ребята, спасибо!! Применил ваши советы 1) Добавил New к обьявлению XL application 2) Добавил ссылку на книгу при обращении, как вы мне дважды советовали WS.Cells.... Но я не сразу увидел 3) Оставил TaskKill, это мой ход, но как-то надо убрать процесс В итоге сегодня работает без ошибок, прямо дую на воду, гоняю циклы подряд, разные пользовательские права. Пока работает. Спасибо огромное всем откликнувшимся ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2020, 03:14 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968 В итоге сегодня работает без ошибок, прямо дую на воду, гоняю циклы подряд, разные пользовательские права. Пока работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2020, 04:40 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Панург Joss если одновременно использовать раннее (через референсы) и позднее связывание с библиотекой Excel. А вот так. Прописать в референсах ссылку на библиотеку Excel, и в то же время в программе писать Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 12:42 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Глава 4. Использование VBA в качестве клиента автоматизации Гетц доходчиво (раннее и позднее связывание) http://radiosit.ru/news/programmirovanie_na_visual_basic_6_i_vba_rukovodstvo_razrabotchika/2018-08-10-7714 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 13:02 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
Joss Панург пропущено... Это как? А вот так. Прописать в референсах ссылку на библиотеку Excel, и в то же время в программе писать Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 20:30 |
|
Помогите завершить процесс Excel!
|
|||
---|---|---|---|
#18+
MSerg1968 ...У меня тривиальная как казалось бы задача, с листа excel срисовать данные в таблицу Access.... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 21:41 |
|
|
start [/forum/topic.php?fid=45&fpage=15&tid=1610002]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 152ms |
0 / 0 |