|
|
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Господа, специалисты по екцелю, помогите решить проблему. Есть файл, который категорически не хочет открываться (появляется такое сообщение, как на картинке; restart and recover не помогают - файл открывается, но процедуры не работают). Самое странное, что на данном комютере все другие екцелевские файлы открываются и сам екцель работает без проблем, и данный файл открывается на других компютерах тоже без проблем. Как подружить данный файл с данным компом? :) Подскажите что смотреть в файле, что проверить? При отладке всё проходит хорошо, при вызове этой процедуры тоже всё хорошо. Но если эту процедуру, запускать автоматом при открытии файла, ругается на жёлтуюю строчку. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:31:34 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
а если так? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:41:46 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
То же самое... Ещё раз повторюсь - тотже файл на других машинах работает без проблем... Я уже и региональные настройки проверил, думал может из-за них... Нет - все компы настроены одинаково. А что эта вообще за ашипка, какая часть екцеля её провоцирует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:50:31 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Ещё вот нашёл. И опять таки только на одном компе ругается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:40:16 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Может бред, но как говорили некоторые "Попытка не пытка..." Попробуй перед выполнением проблемной строки поставить задержку на одну две секунды Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:26:01 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
или Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:30:49 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Нет, не помогло ни то, ни то... И опять таки, самое интересное, -если файл открыть и запустить процедуру - всё хорошо, -если делать аутоопен - на екране ашипка :9, -если сделать /* .Refresh BackgroundQuery:=False */ и после ашипки на аутоопен сделать ресторе - при втором открытии, ашипки нет. Вапче ничего нет и никакя процера ничего не делает - а это не есть гут. вот сам файл (кажется мной не тронутый вариант) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:59:57 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
свои изменения пометил "VBAPRO". это не решение проблемы, просто, чтоб файл заработал. Решение - переписать все заново с защитой от ошибок, переменные функций листа должны быть типизированы и правильно использованы в коде,a также проверяться на содержание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 16:53:17 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
ByKiSЕщё вот нашёл. И опять таки только на одном компе ругается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. А скажите мне пожалуйста, в чем сакральный смысл этой пары команд: Код: plaintext 1. Поставь BackgroundQuery:=False и убери облом рефреша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 22:57:26 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Спасибо, воспользовался советами - исправил и то что вы сказали, и то что сам ещё нашёл. Уже 2 часа 20 минут никто не жалуется (есть основания пологать, что работает)... Предложенное "переписать все заново учитывая сакральный смысл всех команд" - вызвает некия сомнения в душе :). Ведь раз код (пусть такой) работает на других машинах - значит причина упомянутой ашипки не он ... А что? ЗЫ: Любой глюк должен поддаваться объяснению! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 11:28:23 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
можно и так, хотя кода не так много. наличие "сакрального смысла" уже плохо, смысл должен быть ясен, тогда будет уверенность что программа дает актуальные данные. Но это требования высокого уровня программирования. Если не до этого, а все работает, то можно и оставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 11:55:30 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Требования высокого уровня программирования, конечно, надо учитывать, но по ночам не даёт покоя сам факт того, что на одном компе код работал, на другом - нет. Эт что же, на одной машине требования занижены? :) Кстати, согласен - кода почти что и нет. И хотелось бы подчеркнуть, что ошибки как таковой тоже не было... И упомянутое "а че это ты упал?" обоснованно вызывает недоумение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 12:12:51 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
ByKiSВедь раз код (пусть такой) работает на других машинах - значит причина упомянутой ашипки не он ... А что? ЗЫ: Любой глюк должен поддаваться объяснению! Конечно должен поддаваться объяснению. Но иногда для нахождения этого объясенения надо копаться на реальном железе :) Данный кривой код может прекрасно работать на одной машине и не падать на другой - по той простой причине, что первая машина быстрее устанавливает связь с сервером чем вторая. На машине с быстрой сетевой карточкой, с быстрыми свичами на пути до сервера или просто с малой загруженостью оперативной памяти - Эксель успевает установить связь с сервером и начать обмен данными, а потом приходит команда отменить обмен. А на машине с плохой связью или с забитой всякими демонами/вирусами/антивирусами памятью Эксель не успевает подсоединиться к серверу и когда приходит команда на отмену - отменять еще нечего, но через милисекунду после отмены приходит ответ от сервера... Вот тебе и плавающая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 18:25:08 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
Согласен, но (одно НО) - отключив вообще комп от сервера и запустив екцель и открыв файл останавливаемся на Код: plaintext Хотя поалуй, в одном Вы точно правы - виновато железо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 18:44:12 |
|
||
|
Странная ашипка екцеля :(
|
|||
|---|---|---|---|
|
#18+
ByKiSСогласен, но (одно НО) - отключив вообще комп от сервера и запустив екцель и открыв файл останавливаемся на Код: plaintext В случае фонового рефреша, Эксель во первых создает подключение к серверу (которое само по себе состоит как минимум из трех низкоуровневых операций), потом создает отдельный поток, отдает в новый поток хендл коннекта, этот вторичный поток формирует SQL-запрос, формирует хендл запроса, дает доступ главному потоку к этому хендлу, посылает запрос. Во вторых, ждет пока сервер обработает запрос, получает результат из хендла запроса, информирует об этом главный поток и отдает ему даные результата. И в третьих, убивает хендл запроса, убивает хендл коннекта и наконец завершается. Когда главный поток (в котором макрос и выполняется) пытается выполнить команду CancelRefresh, он посылает эту команду не вторичному потоку, а в хендл запроса. Чтобы в первую очередь проинформировать об отмене сервер. Тогда запрос автоматически завершится с результатом "отменен". Но это так же означает что на момент команды CancelRefresh, вторичный поток уже должен существовать и он уже должен сидеть в спящем режиме ждать ответ сервера... Ну а если порвать кабель к серверу, вылезет вполне легальная ошибка "нет связи" на самом первом шаге. Почему Эксель не проверяет можно ли уже отменять запрос или еще нельзя, и почему он вообще падает если запрос отменен раньше чем создан - это уже другой вопрос :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 21:08:05 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34443655&tid=2183143]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
61ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 362ms |

| 0 / 0 |
