Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите решить задачку на VBA в экселе  (Прочитано 11485 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NightX
Гость
« : 15-06-2006 14:47 » 

HELP! Нужно написать программу слияния нескольких экселевских файлов в один большой. Я код вроде написал, но заполняется она не полностью.
Вот Код
Public Sub Слияние()
Dim sht As Sheets, wrks
'слияние
n = Worksheets("ПереченьКафедр").Range("A5:A7").CurrentRegion.Rows.Count
k = 5
For i = 3 To n
A = Worksheets("ПереченьКафедр").Cells(i, 2)
B = "C:\Documents and Settings\Симонов Павел\Рабочий стол\РГР\" + A
Set wrks = Workbooks.Open(B)
For j = 5 To 72
Workbooks("Кафедра.xls").Worksheets("ДоктораЮРиЭк").Cells(k, j) = Workbooks(A).Worksheets("ДоктораЮРиЭк").Cells(6, j)
Next j
wrks.Close
k = k + 1
Next i
End Sub
Файл кафедра-в него надо слить файлы из адреса C:\Documents and Settings\Симонов Павел\Рабочий стол\РГР\ ДоктораЮРиЭк-этто рабочий лист в который надо залить.В листе "Перечнь кафедр" находятся названия файлов которые над слить.
Посмотрите код, и если че исправьте пжлст...
« Последнее редактирование: 14-12-2007 22:06 от Алексей1153++ » Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #1 : 16-06-2006 07:17 » 

Цитата
но заполняется она не полностью
кто такая она, и что значит, неполностью заполняется?
Записан

Славная трава...
NightX
Гость
« Ответ #2 : 16-06-2006 13:10 » 

Цитата
но заполняется она не полностью
кто такая она, и что значит, неполностью заполняется?

Она этоТаблица в которую надо слить 3 маленьких таблиц.
Неполностью то есть по одной строке из каждой маленькой таблицы заполняется в большую. А надо чтобы все строки(их там всего 3)
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #3 : 19-06-2006 07:18 » 

а.. точно. 6-ая...
цикл
Код:
For j = 5 To 72
Workbooks("Кафедра.xls").Worksheets("ДоктораЮРиЭк").Cells(k, j) = Workbooks(A).Worksheets("ДоктораЮРиЭк").Cells(6, j)
Next j
надо вложить в еще один цикл по всем строкам листа "ДоктораЮРиЭк" книги А
Записан

Славная трава...
NightX
Гость
« Ответ #4 : 19-06-2006 10:16 » 

В смысле? Нужно написать для каждй строки свой цикл?
Можешь примерно накатать как это будет выглядеть?
Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #5 : 19-06-2006 10:31 » 

Код:
for l = 6 to <сколько строк в маленькой таблице>
   For j = 5 To 72
      Workbooks("Кафедра.xls").Worksheets("ДоктораЮРиЭк").Cells(k, j) = Workbooks(A).Worksheets("ДоктораЮРиЭк").Cells(l, j)
   Next j
   k = k + 1
next l
Записан

Славная трава...
NightX
Гость
« Ответ #6 : 19-06-2006 11:52 » 

То есть вся пога выглядит так:
Код:
Public Sub Слияние()
Dim sht As Sheets, wrks
'слияние
n = Worksheets("ПереченьКафедр").Range("A5:A7").CurrentRegion.Rows.Count
k = 5
For i = 6 To 3
A = Worksheets("ПереченьКафедр").Cells(i, 2)
B = "C:\Documents and Settings\Симонов Павел\Рабочий стол\РГР\" + A
Set wrks = Workbooks.Open(B)
For j = 5 To 72
      Workbooks("Кафедра.xls").Worksheets("ДоктораЮРиЭк").Cells(k, j) = Workbooks(A).Worksheets("ДоктораЮРиЭк").Cells(i, j)
   Next j
   k = k + 1
Next i
End Sub
Или нет?
« Последнее редактирование: 14-12-2007 22:06 от Алексей1153++ » Записан
Falsehood
Молодой специалист

ru
Offline Offline
Пол: Женский
не может быть


« Ответ #7 : 20-06-2006 07:25 » 

NightX, нет! у тебя должно быть три цикла:
- по стокам листа "ПереченьКафедр" : for i = 3 to n
    - по строкам на листе "ДоктораЮРиЭк" каждой открытой книги, имя которой ты хранишь в переменной А : for l = 6 to <сколько там строк>
        - по ячейкам этой каждой строки : for j = 5 to 72
            ...
        next j
    next l
next i

в VBA нормальный отладчик. запусти свой макрос из первого поста в нем и посмотри как он работает пошагово. сразу все понятно станет.
Записан

Славная трава...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines