1"как преобразовать из ~ 150 *.xls в одну книгу"
Смотря как Вы намереваетесь "склеить" 150 файлов в один...
Если в каждой книге по одному листу - то всё просто.
Пишем макрос, который копирует все листы из файлов в определённой папке в один итоговый файл, - и всё.
2"как сделать "скелет" чтобы наложить его в файлы поверх (5-10 разных ячеек в разных местах) основного текста...."
Создаём лист шаблона, заполняем его данными.
Потом выделяем ячейки, которые нужно перезаписать на остальных листах этого файла (или на 1-м листе каждого из 150-ти файлов), и запускаем другой макрос.
3"Возможны ли массовые работы с файлами .xls"
Ещё как возможны. Примеров на форуме множество.
(добавлено)
Вот что получилось:
Код: Выделить всё
[color=darkblue]Sub[/color] НесколькоФайловВОдин()
ИмяДляНовогоФайла = "ВсёВОдном"
Application.ScreenUpdating = False: Application.DisplayAlerts = [color=darkblue]False[/color]
[color=darkblue]Dim[/color] coll [color=darkblue]As[/color] [color=darkblue]New[/color] Collection, wb [color=darkblue]As[/color] Workbook, sh [color=darkblue]As[/color] Worksheet, newRow [color=darkblue]As[/color] Range
Mask = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "*.xls")
Filename = Dir(Mask)
[color=darkblue]While[/color] Filename <> "" [color=green]' перебираем все файлы в текущей папке[/color]
[color=darkblue]If[/color] [color=darkblue]Not[/color] (Filename [color=darkblue]Like[/color] ThisWorkbook.Name & "*" [color=darkblue]Or[/color] Filename [color=darkblue]Like[/color] ИмяДляНовогоФайла & "*") _
[color=darkblue]Then[/color] coll.Add Filename
Filename = Dir
[color=darkblue]Wend[/color]
[color=darkblue]If[/color] coll.Count = 0 [color=darkblue]Then[/color] MsgBox "Файлы для обработки не найдены", vbExclamation: [color=darkblue]Exit[/color] [color=darkblue]Sub[/color]
[color=darkblue]Dim[/color] newwb [color=darkblue]As[/color] Workbook: [color=darkblue]Set[/color] newwb = Workbooks.Add(xlWBATWorksheet)
[color=darkblue]On[/color] [color=darkblue]Error[/color] [color=darkblue]Resume[/color] Next: n = 1
[color=darkblue]For[/color] [color=darkblue]Each[/color] Item [color=darkblue]In[/color] coll
Application.StatusBar = "Обрабатывается файл " & n & " из " & coll.Count: n = n + 1
DoEvents
[color=darkblue]Set[/color] wb = Workbooks.Open(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, Item), , [color=darkblue]True[/color])
[color=darkblue]If[/color] [color=darkblue]Not[/color] wb [color=darkblue]Is[/color] [color=darkblue]Nothing[/color] [color=darkblue]Then[/color]
wb.Worksheets(1).Copy newwb.Worksheets(1)
newwb.Worksheets(1).Name = Left(Replace(wb.Name, ".xls", ""), 31)
wb.Close [color=darkblue]False[/color]
[color=darkblue]End[/color] [color=darkblue]If[/color]
[color=darkblue]Next[/color]
newwb.SaveAs Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "ВсёВОдном.xls")
newwb.Worksheets(newwb.Worksheets.Count).Delete
Application.DisplayAlerts = [color=darkblue]True[/color]
Application.StatusBar = False
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого.
http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216