|
|
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Существуют 2 книги "Книга1.xls" и "Книга2.xls" В них есть 2 одинаковых листа "Данные1" и "Данные2" "Книга2.xls" открыта в Excel Задача - скопировать листы "Данные1" и "Данные2" из "Книга1.xls" в "Книга2.xls" на листы с темиже именами. Проблему решил следующим образом. Код: 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. Я сам прекрасно понимаю, что это не оптимальный вариант. Можно еще читать через ExecuteExcel4Macro но, как я себе представляю, вернет он мне только значение ячейки. Код: plaintext 1. 2. Подскажите пожалуйста. ------------------------ С уважением Betepon ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 11:43:14 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
beteponА вот как лист считать, и не открывать его при этом (чтение из закрытого листа). Можно через ADO. Поиск рулит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 12:27:54 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Я понимаю, что сделать это можно как в этом прмере (пример не мой - взят из этого же форума) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Но я никогда не знаю количество данных (а конкретнее строк - стобцы фиксированы) которое мне придется читать. В результате при чтении я не знаю границ для Range Если бы можно было определить этот параметр, не открывая книгу - тогда проблемма я думаю была - бы решена. С уважением BETEPON --------------------------- Ну вот собственно и ВСЕ. Подпись:Смерть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2006, 13:52:21 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 09:01:59 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо Всем откликнувшимся. Буду пробовать. С уважением BETEPON --------------------------- Ну вот собственно и ВСЕ. Подпись:Смерть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 12:01:14 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
betepon Но я никогда не знаю количество данных (а конкретнее строк - стобцы фиксированы) которое мне придется читать. В результате при чтении я не знаю границ для Range Если бы можно было определить этот параметр, не открывая книгу - тогда проблемма я думаю была - бы решена. Создай динамически именованый диапазон и обращайся по имени Range("МойДиапазон"). Создание динамического имени делается в меню "Вставка-Имя-Присвоить..." В Имя пишешь Имя диапазона, в формулу пишешь функцию смещение. ЗЫ: В примере в столбце A:A не должно быть пропусков. Range("МойДиапазон") вернёт данные A2:D4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 14:55:09 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
... Ну, и соответственно, когда в пятой строке появятся данные, то Range("МойДиапазон") вернет диапазон A2:D5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 16:55:44 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
автординамически именованый диапазон Именованый я понимаю, а вот что такое динамический именованый - не знаю. Сори. Объясните пожалуйста подробнее. Кроме того в той книге, которую я читаю, в момент, когда я ее читаю, могут работать (а могут и не работать) другие VBA, которые изменяют ее содержимое. При чем эти макросы могут принадлежать, а могут и не принадлежать этой книге. Такой закос под базу данных. С уважением BETEPON --------------------------- Ну вот собственно и ВСЕ. Подпись:Смерть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 18:24:06 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
betepon автординамически именованый диапазон Именованый я понимаю, а вот что такое динамический именованый - не знаю. Сори. Объясните пожалуйста подробнее. Простой именованый диапазон это, например A1:B2 и баста! А динамически именованный означает, что имя может быть присвоено не стабильному диапазону, а меняющемуся. Применяется в случаях, когда размер диапазона заранее не известен, но может быть описан. Для создания адреса диапазона, я использую функцию СМЕЩ(). Собственно она возвращает адрес диапазона. У этой функции есть пять параметров. Первый параметр, это адрес базовой ячейки от которой будет производиться расчёт левого верхнего угла диапазона, например А1. Второй и третий параметр это смещение относительно А1 по строкам и столбцам. Например, если эти параметры будут равны 1 и 2, соответственно, то правый верхний угол диапазона будет ячейкой С2 (на 1 вниз, на 2 направо). Четвертый и пятый параметр, это высота и ширина диапазона. Т.е. функция СМЕЩ(А1,1,1,2,2) вернёт адрес B2:C3, а функция СУММ(СМЕЩ(А1,1,1,2,2)) выдаст сумму данных в диапазоне B2:C3. Замечательная особенность функции СМЕЩ() является возможность использования выражений в качестве параметров. Например, в качестве четвертого параметра можно использовать функцию СЧЁТЗ(А:А). Так высота массива будет соответствовать количеству заполненных ячеек в столбце А:А. Другими словами нам заранее не известно что просуммирует функция СУММ(СМЕЩ(А1,0,1,СЧЁТЗ(А:А),2)), но мы можем сказать, что будут просуммированы данные из столбцов В и С, начиная со строки 2 и до строки в которой есть данные в ячейке А. Далее смотри мой пример по сабжу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2006, 20:45:54 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Если говорить коротко, то динамически именованный диапазон это имя которое ссылается на диапазон в котором ты никогда не знаешь количество данных (строк и/или столбцов) которые тебе придется читать. М:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 02:18:40 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
betepon Кроме того в той книге, которую я читаю, в момент, когда я ее читаю, могут работать (а могут и не работать) другие VBA, которые изменяют ее содержимое. Тут, конечно, есть существенное (точнее - основное) отличие от базы данных. Пока изменяемый файл не будет сохранен, другие пользователи не увидят изменений. Но тут уж что уж тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 02:23:29 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
100g...функция СУММ(СМЕЩ(А1,0,1,СЧЁТЗ(А:А),2)), но мы ... Сори. Читай: ...функция СУММ(СМЕЩ(А1,1,1,СЧЁТЗ(А:А),2)), но мы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 02:29:17 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо. Буду пробовать. Хотя я предпочел бы не создавать формул на листах, а использовать только VBA. С уважением BETEPON --------------------------- Ну вот собственно и ВСЕ. Подпись:Смерть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 09:54:52 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
beteponОгромное спасибо. Буду пробовать. Хотя я предпочел бы не создавать формул на листах, а использовать только VBA. )))))) Так формул на листе и нет. Она в объявлении имени, а на листе только данные. (Внимание! оффтопик) Коль уж понесло меня тут про динамически именованные диапазоны, то приведу еще один любопытный пример их использования. Это построение графиков с самообновляющимися исходными данными. Попробуй добавить данные на Лист1 и посмотри на диаграмму ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 10:39:58 |
|
||
|
Копировать лист из закрытой книги Еxcel
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное - разбираюсь с примерами. По пути получается много забавных глюков. С уважением BETEPON --------------------------- Ну вот собственно и ВСЕ. Подпись:Смерть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2006, 10:00:18 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=33839922&tid=2184656]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 450ms |

| 0 / 0 |
