|
|
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
Знатоки подскажите можно ли обойти вывод сообщения об отсутствии в книге листа. Проблема вот какая нужно узнать строку в которой находится искомый текст не открывая книгу MS Excel. Вот код он работает, но есть проблемка если в книге на которую ссылается формула нет указанного листа Excel выдает сообщение "Выберите лист для обновления" и список листов в книге. Можно ли как-нибудь обрубить отображение этого сообщения? // Dim i As Integer Application.DisplayAlerts = False For i = 1 To 100 ActiveCell.FormulaR1C1 = "=MATCH(R3C1,[Книга3.xls]Лист4!C" & CStr(i) & ",0)" Debug.Print ActiveCell.FormulaR1C1 Debug.Print ActiveCell.Value If IsError(ActiveCell.Value) = False Then ActiveCell.Value = ActiveCell.Value Exit For End If Next i Application.DisplayAlerts = True // Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 20:29:35 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
Может быть возможно узнать есть ли лист с нужным названием в книге не открывая ее? Это бы помогло. Очень не хочется открывать книгу поскольку искать приходится в разных файлах и их достаточно много. ( Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 20:56:09 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
А почему "не открывая книгу" ? Ведь доступ на чтение все-равно должен быть, а тогда можно ведь и открыть, и только для чтения (если кем-то уже редактируется), и чтоб окно с книгой не всплыло, и т.д... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 21:30:54 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
DomninskyВот код он работает... 1) Мне почему-то кажется, что этот код не может работать в принципе если не открывать файл Книга3.xls т.к. путь к нему не прописан. 3) На мой взгляд данная задача (целиком) больше для ADO, а может лучше и открыть файл и не писать по 100 раз значение в ячейку. 4) Узнать есть ли лист в закр. книге можно к примеру так: Код: 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. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 22:21:45 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
Да мне придется не одну книгу открывать и не по одному разу. а в них еще к томк же на open повешена открытию формы. Она все время вылазит глаза мозолит даже если скывать окно Excel. Поэтому и хотелось бы обойтись без открытия книги. Может и поиск значения на листе в книге можно через ADO делать не открывая саму книгу ессно? Если да то это бы вообще решило все проблемы ) P.S. На счет пути прав я про это знаю просто не стал загромождать код лишними путями, а так конечно надо весь путь прописывать. Если есть идейки по поводу поиска значения подскажи... Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2006, 23:30:21 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
DomninskyДа мне придется не одну книгу открывать и не по одному разу. а в них еще к томк же на open повешена открытию формы. Она все время вылазит глаза мозолит даже если скывать окно Excel. А ты убей событие Workbook_Open и перенеси весь код в отдельный модуль, в процедуру public Sub Auto_Open() Тогда если книгу открывать вручную - макрос запустится. А если ее открывать из макроса - не запустится. DomninskyПоэтому и хотелось бы обойтись без открытия книги. Может и поиск значения на листе в книге можно через ADO делать не открывая саму книгу ессно? Если да то это бы вообще решило все проблемы )Работая через ADO с листом Экселя ты работаешь как-будто с SQL сервером. Так что бери учебник по SQL и читай как там делается поиск (SELECT ... WHERE a=1 and b=3; и так далее) Но вообще это все извращение. Лучше ставить нормальную базу данных и читать данные не из Экселевских книг, а из БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 00:34:31 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. Не забудь сначала установить ссылку указанную в начале кода. Имей ввиду, что, в случае с Excel, ADO загружает данные каждого из полей только если хоть одна из первых восьми (8) строк этого поля содержит какое-либо значение. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 00:57:02 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
KL (XL)Имей ввиду, что, в случае с Excel, ADO загружает данные каждого из полей только если хоть одна из первых восьми (8) строк этого поля содержит какое-либо значение.Восьми? А не первых двух? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 01:48:30 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
White Owl Восьми? А не первых двух? "Rows to Scan: Excel does not provide ADO with detailed schema information about the data it contains, as a relational database would. Therefore, the driver must scan through at least a few rows of the existing data in order to make an educated guess at the data type of each column. The default for "Rows to Scan" is eight (8) rows . You can specify an integer value from one (1) to sixteen (16) rows, or you can specify zero (0) to scan all existing rows. This is done by adding the optional MaxScanRows= setting to the connection string, or by changing the Rows to Scan setting in the DSN configuration dialog box. However, due to a bug in the ODBC driver, specifying the Rows to Scan (MaxScanRows) setting currently has no effect. In other words, the Excel ODBC driver (MDAC 2.1 and later) always scans the first 8 rows in the specified data source in order to determine each column's datatype." http://support.microsoft.com/kb/257819 http://support.microsoft.com/kb/189897/EN-US/ KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 01:53:11 |
|
||
|
Использование функции MATCH (ПОИСКПОЗ)?
|
|||
|---|---|---|---|
|
#18+
White OwlА ты убей событие Workbook_Open и перенеси весь код в отдельный модуль, в процедуру public Sub Auto_Open() Тогда если книгу открывать вручную - макрос запустится. А если ее открывать из макроса - не запустится. Это убъет событие Workbook_Open: Код: plaintext 1. 2. 3. 4. Начиная с XL2002 можно еще и так (убивает любой код VBA, а не только события), но я сторонник обратной совместимости как минимум до XL2000 (но лучше до XL97) :-) Код: plaintext 1. 2. 3. 4. KL [MVP - Microsoft Excel] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2006, 02:18:22 |
|
||
|
|

start [/forum/topic.php?fid=61&gotonew=1&tid=2184047]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 329ms |

| 0 / 0 |
