|
|
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть вопрос, который не могу решить сам. В файле есть не постоянное количество листов. Как программно VBA консолидировать эти файлы? Подскажите пожалуйста. Интересует сам механизм обращения к каждому листу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 13:42:58 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Что-то вроде этого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 13:48:36 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Если консолидированный лист в другой книге, то Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 13:53:31 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Set wb = ActiveWorkbook ' или как советовали выше workbooks(имя) Dim stri() As String For i = 1 To wb.Worksheets.Count ReDim Preserve stri(i) stri(i) = "[" + wb.Name + "]" + wb.Worksheets(i).Name + "!R1C1:R16C1" ' интервал просто так взял Next i i = i - 1 Range("F1").Consolidate Sources:=(stri(1)), Function:=xlSum, TopRow:=False, LeftColumn:= _ False, CreateLinks:=False А вот там где красенькое должно быть array() а как туда массив пульнуть я не знаю. Может кто подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 14:03:47 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
если заменить(stri(1)) на Array(stri(2), stri(3)) то работать будет, а как динамически? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 14:07:47 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 14:23:47 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Понятно, спасибо. Массив то действительно от 0 до wb.ws.count-1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 14:33:40 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
А мне не очень понятно, к сожалению вчера я отсутствовал и не мог поучаствовать в обсуждении. Уважаемый Deggasad, поясните пожалуйста: Set SVOD = Worksheets("003")- что это? If ws.Name <> SVOD.Name Then- что за условие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:32:13 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
GhostProgramА мне не очень понятно, к сожалению вчера я отсутствовал и не мог поучаствовать в обсуждении. Уважаемый Deggasad, поясните пожалуйста: Set SVOD = Worksheets("003")- что это? If ws.Name <> SVOD.Name Then- что за условие? Это если консолидированный лист находится в этой же книге То назначаем его (в примере "003") И условие если имя листе не равно имени консолидированного листа то выполняем определённые действия. Вас ведь интересовал механизм обращения к каждому листу! Если консолидированный лист в другой книге то условие не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:40:38 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
А если я хочу для всех листов совершить действия, то это будет так выглядеть? Dim ws As Worksheet For Each ws In Worksheets ... Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 14:58:37 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Проблема у меня несколько шире... У меня есть книга в которой каждый месяц различное количество листов. На каждом листе таблица однотипная, и мне надо создать лист на котором будут собраны все таблицы в одну. Если кто писал такой макрос, то помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:06:16 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
GhostProgramПроблема у меня несколько шире... У меня есть книга в которой каждый месяц различное количество листов. На каждом листе таблица однотипная, и мне надо создать лист на котором будут собраны все таблицы в одну. Если кто писал такой макрос, то помогите пожалуйста. Так сверху тебе такие макросы и дали. Насчет консолидации экселевской. Или тебе надо "склеить" все таблицы на одном листе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:14:01 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
да, мне надо склеить все таблицы на одном листе: в цикле Dim ws As Worksheet For Each ws In Worksheets ... Next я думаю методом СurrentRegion.Select выделять таблицы, дальше создать новый лист и копировать из всех листов в него, только вот я скопировал допустим одну таблицу, а как мне указать далее строку свободную за преведущей таблицей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:26:13 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
за не именеем всей информации сделал не то, но всё же выкладываю для народного использования и хаинея (типа того) Консолидация всех листов книги: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 15:43:19 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 16:26:57 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
Что-то я не правильно делаю... В приложении я прикрепил проблемку... у меня допустим в файле два листа с таблицами а лист2 нужно создать вручную? RegularCopy ("Файл1") RegularCopy ("Файл2") RegularCopy ("Файл3") - здесь надо вставлять вместо файл1 - имя файла, в котором листы для консолидации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:10:50 |
|
||
|
Консолидация_листов
|
|||
|---|---|---|---|
|
#18+
GhostProgramЧто-то я не правильно делаю... В приложении я прикрепил проблемку... у меня допустим в файле два листа с таблицами а лист2 нужно создать вручную? RegularCopy ("Файл1") RegularCopy ("Файл2") RegularCopy ("Файл3") - здесь надо вставлять вместо файл1 - имя файла, в котором листы для консолидации? Вместо Листа2 напиши любое имя листа в который будешь консолидировать! Лист находится в другой книге! Книга эта лежит в папке. в этой же папке лежит подпапка, которая называется "Исходные данные", в ней лежат файлы в которых нужно просмотреть все листы и собрать в один. Имена этих файлов всё правильно записываются как RegularCopy ("Файл1") RegularCopy ("Файл2") Если файл один оставь одну строку Обрати внимание название без расширения. Там ещё много условностей думаю понемногу разберёшься! Например мой макрос расчитан что будет находится в модуле самой книги для консолидации! Иначе нужно заменить в строке Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 17:20:24 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34503038&tid=2183028]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 321ms |

| 0 / 0 |
