Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 11:32   #1
Slamfist
 
Регистрация: 15.03.2010
Сообщений: 3
По умолчанию генерация книг

Здравствуйте, хотел обратиться к вам за помощью.
Начальство поставило перед фактом - делай. Почти все что нужно сделал, но все, что делал не связано с VBA. А последний момент не обойти без этого.

Суть: есть "Книга1" и "Книга2". "Книга2" - представляет роль некой БД. К примеру на лист1 в столбец А вбиваются цифры от 1 до ...неизвестно. А в "Книга1" при нажатии на кнопку, одной ячейки(к примеру B2) присваивается значение из ячейки A1 "книга2", после этого "книга1" сохраняется с именем типа "1.xls". И так происходит пока не встретит пустую ячейку в столбце А "книга2".

Т.е. при нажатии на кнопку создаются книги с именами из столбца А "книга2".

Заранее спасибо.
Slamfist вне форума Ответить с цитированием
Старый 15.03.2010, 13:25   #2
Slamfist
 
Регистрация: 15.03.2010
Сообщений: 3
По умолчанию

хотя бы подскажите как правильно записать цикл:
Код:
for i = 1 to j?
if len(workbooks("Книга2.xls).Sheets("Лист1").Cells(1, i)) <> 0 then
     workbooks("Книга1.xls).Sheets("Лист1").Range("B2") = workbooks("Книга2.xls).Sheets("Лист1").Cells(1, i)) 
     ActiveWorkbook.SaveCopyAs Filename:=CStr(Worksheets("Лист1").Range("B2")) + ".xls"
else
j = i
end if
next
Slamfist вне форума Ответить с цитированием
Старый 15.03.2010, 13:59   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Код:
Sub CreateBooks()
Dim wB1, wB2, newBook: Application.ScreenUpdating = False
     Range([B2], Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
     Set wB1 = ThisWorkbook
     Set wB2 = Workbooks.Open(ThisWorkbook.Path & "\Книга2.xls")
     
     For i = 1 To wB2.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
        iiName = wB2.Sheets(1).Cells(i, 1).Value
        newBook = ThisWorkbook.Path & "\" & iiName & ".xls"
        wB1.Sheets(1).Cells(i + 1, 2).Value = iiName & ".xls"
        Workbooks.Add: ActiveWorkbook.SaveAs Filename:=newBook:
        ActiveWorkbook.Close True
    Next i
    wB2.Close False: Application.ScreenUpdating = True
End Sub
Вот пример (запустите файл Книга1 и нажмите кнопку):
Вложения
Тип файла: zip Пример.zip (17.1 Кб, 14 просмотров)
Maxx вне форума Ответить с цитированием
Старый 15.03.2010, 14:08   #4
Slamfist
 
Регистрация: 15.03.2010
Сообщений: 3
По умолчанию

Спасибо, то что нужно)
Slamfist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение книг demax Microsoft Office Excel 7 26.01.2010 17:25
14 книг по программированию на СИ # B@ND!T Общие вопросы .NET 0 18.12.2009 23:54
объеденение книг king13 Microsoft Office Excel 7 16.10.2009 14:57
обединение книг Aqil_f Microsoft Office Excel 0 17.09.2009 12:40
Подборка книг Mikhail Bakurov Свободное общение 2 01.02.2009 05:51