|
|
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Всем привет. Сейчас делаю с помощью OLE2 поиск в документе EXCEL. Так вот, при использовании Range.Find возвращается либо объект Range, либо Nothing. кто-то может подсказать способ проверки значения на Nothing? или просто-напросто поставить перехватчик исключения на попытку получения значения из найденного / релиза и не заморачиваться? Например, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 12:04 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Да, и что-то уже пару часов не могу заставить работать метод FindNext - если передаю ячейку, от которой искать, то исключение летит... Конечно, можно построчно пройтись по диапазону ячеек и каждую проверить, но это просто безумие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 14:06 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
OmegaMale, 1. Судя по всему, засада. Nothing не объект OLE Automation, т.е. через OLE2 package с ним работать (корректно проверить) не получиться. Тут два варианта - или работать не корректно, по принципу, если метод вернул хрень, то значит Nothing. Если у тебя Client-Server only, то можно совместно с OLE2 package использовать еще ActiveX build-ins. Старые примеры в данном форуме быть должны. Хотя код станет значительно менее читаемым и явно unsupported by Oracle ))) 2. Не знаю. Подводных камней с ходу не видно. Возможно проблема не с "от которой искать", а с регионом поиска. Сужу по google, вылезал подобный вопрос. http://www.rsdn.ru/forum/vb/2884960.1.aspx Метод лечения не знаю. Возможно проблема надуманная. Не верю я в настолько явные "баги" у M$. Если нужно, и то и другое _заставить_ работать можно. Но я OLE2 и Excel не занимаюсь уже более 6-7 лет. Т.ч. даже Forms 6 на компе нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 15:06 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Спасибо за ответ. по поводу Nothing - черт с ним, сделал так, что после поиска идёт получение значения ячейки, если исключение, то ничего не найдено, и хорошо, если нормально, то результат есть, тоже хорошо. С Регионом поиска всё в порядке, т.к. он является всеми ячейками, даже адрес проверял, пишет = $1:$65536. Просто странно, что находит первое значение, а дальше искать не хочет в том же диапазоне, причём такое ощущение, что передаваемую ячейку в FindNext Excel не понимает и потому исключение бросает. Я уже всё перепробовал туда совать: и предыдущий результат поиска, и получение из него Item(1,1), и получение ячейки из Worksheet.Cells(prevresultRowindex,prevResultColIndex) и получение prevResult.Range(prevResult.Adress)... Кстати, ActiveX почему-то не импортируется для Excel, при импорте не показывает ничего доступного, классы есть, а методов и свойств нету... до этого Shell.Explorer.2 нормально импортировался. Буду дальше париться, скорее всего, сам где-то накосячил, потом отпишусь, если решу проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 15:55 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
To OmegaMale. 1. "идёт получение значения ячейки, если исключение, то ничего не найдено, и хорошо, если нормально, то результат есть, тоже хорошо." +1 "если метод вернул хрень, то значит Nothing." Я думал в том же направлении ))) 2. Посмотри. Мне тоже кажется, что где-то должен быть "косяк". При этом на видном (и соответственно не заметном) месте. Если не получится, напиши. Я постараюсь посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 16:13 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, OLE2.LAST_EXCEPTION возвращает код 2147614725, поискал в сети, это вот такая константа WIN32 API: Код: plaintext 1. То есть, когда я вызываю FindNext, параметр EXCEL'ю не нравится, хм. -------------------------------------------------------------------------------------- Excel Developer Reference Range.FindNext Method Continues a search that was begun with the Find method. Finds the next cell that matches those same conditions and returns a Range object that represents that cell. Doesn’t affect the selection or the active cell. Syntax expression.FindNext(After) expression A variable that represents a Range object. Parameters Name After Required/Optional Optional Data Type Variant Description The cell after which you want to search. This corresponds to the position of the active cell when a search is done from the user interface. Note that After must be a single cell in the range. Remember that the search begins after this cell; the specified cell isn’t searched until the method wraps back around to this cell. If this argument isn’t specified, the search starts after the cell in the upper-left corner of the range. -------------------------------------------------------------------------- Я пытаюсь использовать так эту функцию (привожу без кода зачистки): Код: plaintext 1. 2. 3. 4. 5. 6. 7. Не пойму что не так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 16:39 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Если не тяжело, можешь привести полный текст запускабельного тест кейса. Включая создания Excel.Application, загрузки документа и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 16:47 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, примерно, вот так: Код: 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 17:29 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
В выходные посмотрю, во вторник постараюсь ответить. p.s. дома Инета нет по принципиальным соображениям, что бы не было соблазна дома за компом сидеть ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 17:34 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Интернето-диета :) Спасибо за участие. Но я пока не сдаюсь, буду бодаться с проблемой своими рогами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2010, 17:42 |
|
||
|
forms 6i, OLE2, Excel, Range.Find и проверка на 'Nothing'
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Думаю, не стоит заморачиваться с FindNext, очевидно, что OLE2.ADD_ARG_OBJ как-то некорректно работает. Буду делать поиск вот так: искать от активной ячейки методом Find. Спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2010, 10:49 |
|
||
|
|

start [/forum/topic.php?fid=51&msg=36768928&tid=1878918]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 504ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...