|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
Добрый день, помогите пожалуйста с кодом. Проблема в том, что указанный код хорошо отрабатывает только один раз при его запуске, при повторном запуске процедуры, содержащей этот код, вываливается ошибка Run-time error '1004'. Method 'Range' of object '_Global' failed Ошибка проявляется в строке Range("1:1").Select. Что с ней не так и почему она нормально отрабатывает первый раз я понять не могу. Нашел подобную проблему у человека вот тут https://stackoverflow.com/questions/14168468/run-time-error-1004-method-rows-of-object-global-failed но что именно мне надо подправить в своем коде я так и не понял ((( Буду рад если поможете разобраться в проблеме Заранее спасибо Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 13:46 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
Правильно появляется. Потому что должно быть не Код: vbnet 1.
а Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:09 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
Akina, если сделать с точкой как вы говорите, то тоже первый раз отрабатывает нормально, при повторном выполнении кода ошибка run-time error 91, Object variable or With block variable not set. Что он от меня хочет я не пойму. И почему тогда первый раз отрабатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:27 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
papant1, Да, забыл добавить, что ошибка при этом появляется в следующей строке: Selection.Replace What:=" ", Replacement:="_", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:28 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
papant1, перед выполнением команды Selection.Replace просмотрите в отладчике свойства объекта Selection....может что и прояснится ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 15:44 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
papant1Да, забыл добавить, что ошибка при этом появляется в следующей строке: Selection.Replace Правильно появляется. Потому что должно быть не Код: vbnet 1.
а Код: vbnet 1.
И в предыдущем, и во втором случае методы должны быть привязаны к родительским объектам, а у вас они зависают в воздухе, что приводит к неявному созданию второго экземпляра Excel.Application, который после первого выполнения кода остается в процессах и всё портит. Кроме того, есть претензии к Select и Selection. Если вы не собираетесь наслаждаться процессом на экране - не используйте их. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:26 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, спасибо, стало более понятно (немного) в части того, что создается второй объект экселя и в нем уже видимо ищется в selection что-то и не может найти. Поменял сейчас код на Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Теперь ошибка 1004 появляется в строке app.Selection.TextToColumns Destination (((( Однако до моего сознания не может никак дойти то, чем в первом случае select отличается от второго и вываливается ошибка По поводу использования Select и selection не особо парит, использую app.visible=false ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 16:55 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
papant1 Теперь ошибка 1004 появляется в строке app.Selection.TextToColumns Destination (((( Однако до моего сознания не может никак дойти то, чем в первом случае select отличается от второго и вываливается ошибка Код: vbnet 1. 2.
Та же песня, Range("A1") из воздуха. Вообще, попробуйте этот кусок так: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 17:25 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
Кривцов Анатолий, Та же песня, Range("A1") из воздуха. Вообще, попробуйте этот кусок так: УРААА, заработало! Без selection ) Анатолий, сообщите плиз ваш тел в личку, начислю Вам на пиво донат - искал эту ошибку с вечера пятницы и всю субботу. Сегодня решил спросить на форуме и проблему решили очень быстро! Все, тему можно закрывать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2020, 17:38 |
|
Ошибка при повторном выполнении того же самого кода
|
|||
---|---|---|---|
#18+
papant1, заработало, и ладненько. Пиво лучше выпейте сами за моё и Akina здоровье. :) Но есть пара вопросов: 1. Зачем вы для импорта в Акс из текстового CSV файла используете Excel? Если у вас действительно в качестве разделителей полей используются и Tab, и "|", то оправдано, а если только "|", то с этим легко справится и сам Акс. 2. Если бы вы после распределения по столбцам сохранили файл в формате XLS, закрыли, а затем выполнили импорт, то это логично. А в вашем коде DoCmd.TransferSpreadsheet выполняется из текстового файла с несохраненными изменениями, открытого в данный момент. И это работает?!!! Я, наверное, чего-то не понимаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2020, 11:05 |
|
|
start [/forum/topic.php?fid=45&fpage=10&tid=1609825]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 179ms |
0 / 0 |