Пример во вложении. Про PQ вкурсе , но пока что и экселя нет даже 2013-го с PQ и девочке которой будет передаю дела проще будет нажать накнопку, чем объяснять ей PQ.
Записал макрос, чтоб собрать определенные диапазоны из таблиц на листах в одну общую,шапки одинаковые. Но он похоже "одноразовый", тк при вставке выбирается конкретная ячейка.
А как указать , чтобы выбиралась при вставке пустая ячейка , следующая после последней строки предыдущей встваки.
Да, как-то я , наверно,в кодировании трудно улавливаю связь между тем что на экране и что к этому привело точно. Тороплюсь с выводом о том, в чем именно ошибка.А надо смотреть глубже,пошагово как код срабатывает.
Цитата
Вот такой код должен вроде делать то, что нужно
да,спасибо. этот вариант идеально собирает и прописывает названия и дату из D1
Хотя и больше 5 лет уже с Эксель, но всё равно вижу, как это решение получается какое-то волшебное) Хоть бы чаша моего ожидания выучить в совершенстве VBA переполнилась с этой каплей!!
Да,очень желательно. Хотя главное конечно,сокращение времени в дальнейшем. Спасибо. Вчера ,точнее к утру выкрутился таким образом , что поскольку названия файлов -это года ,которые есть в собираемых таблицах, использовал формулы ГОД() и потом сцепить() .
Ругать можно)) записывал как видно рекодером и то не очень корректно, успокаивал себя тем, что главное работает)
Код
Sub simpleXlsMerger2()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
'указать путь к папке с файлами
Set dirObj = mergeObj.Getfolder("C:\Users\HP\Downloads\сборка\")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
'вместо "A2" указать адрес ячейки в каждом файле, с которой начинать сборку
'например, "B3:IV" объединит все данные из файлов, начиная с ячейки B3
'Если колонок больше, чем IV, поменять соответственно
'В "A65536" вместо "A" указать тот же столбец, что и в адресе первой ячейки
Range("A1:IV" & Range("A65536").End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Activate
'Здесь столбец не менять
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
bookList.Close
Next
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range("A5").Select
Selection.End(xlToRight).Select
Range("E5").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(""31.12."",YEAR(RC[-1]))"
Range("F5").Select
ActiveCell.FormulaR1C1 = "=YEAR(RC[-2])"
ActiveCell.SpecialCells(xlLastCell).Select
Selection.End(xlToLeft).Select
Range("F538").Select
Range(Selection, Selection.End(xlUp)).Select
Range("E5:F538").Select
Range("F538").Activate
Selection.FillDown
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range("A2:C2").Select
Application.CutCopyMode = False
Range("E4").Select
ActiveCell.FormulaR1C1 = "Реестр договоров по состоянию на"
Range("F4").Select
ActiveCell.FormulaR1C1 = "Год"
Rows("4:4").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Cells.Select
Selection.ColumnWidth = 11.57
Rows("3:3").Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$I$538").AutoFilter Field:=4, Criteria1:="="
ActiveCell.SpecialCells(xlLastCell).Select
Rows("538:538").Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Cells(1)).Select
Rows("53:538").Select
Range("A538").Activate
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveSheet.Range("$A$1:$I$415").AutoFilter Field:=4
ActiveWorkbook.Save
End Sub
Вот , может, непрофессионально выбрал E и F для вставки как - 250.
Сейчас почти всё идеально. Только как вернуть , чтобы из каждого файла в папке сами таблицы копировались и вставлялись?? Сейчас только из первого файла и последнего файла в папке вставляются.
Код
Sub simpleXlsMerger3()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Dim rr As Range, llastr&
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
Set dirObj = mergeObj.Getfolder("C:\Users\HP\Downloads\сборка\")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
'вместо "A2" указывается адрес ячейки в каждом файле, с которой начинать сборку
'например, "B3:IV" объединит все данные из файлов, начиная с ячейки B3
Set rr = Range("A1:IV" & Cells(Rows.Count, 1).End(xlUp).Row)
'Здесь столбец не менять
With ThisWorkbook.Worksheets(1)
llastr = .Cells(.Rows.Count, 1).End(xlUp)
rr.Copy .Range("A" & llastr + 1)
'имя файла
.Cells(llastr + 4, rr.Columns.Count - 250).Resize(rr.Rows.Count).Value = Left(everyObj.Name, 4)
'значение из ячейки D1(правда, непонятно из какого листа - поэтому из 1)
.Cells(llastr + 4, rr.Columns.Count - 251).Resize(rr.Rows.Count).Value = bookList.Sheets(1).Range("D1").Value
End With
bookList.Close
Next
End Sub
Дмитрий(The_Prist) Щербаков написал: 1. А где смотрите? Должно записываться в последние столбцы. Т.е. судя по коду имя файла должно быть в столбце AW, а данные из D1 - в AX.
upd: см.следующее сообщение
Да, Дмитрий, нашлись) даже не знаю как еще называть такие "грустные приколы"..когда сам же написал добавлять в крайний правый, хотя имел ввиду в следующий столбец после последнего вставленного, то есть в E и в F.. Почти в крайние правые и вставились, только в IW и IX. Из D1 тоже копируются (в IX) Спасибо.
Я теперь пытаюсь сделать чтобы в E и в F вставлялись. И чтобы имя файла копировалось не "2010.xlsx", а без .xlsx
Да, в примере на форуме тоже этой команды вижу нет) теперь понятно. Только результат по этому коду тот же пока что, только собирает таблицы в одну новую. А даты и годы не проставляются построчно((
Хотя видно, что файлы как будто быстро открываются-закрываются, то есть макрос файлы перебирает в папке,чтобы дату получается взять из d1. А в новую таблицу не вставляются
Да, данные-то собираются в новую общую таблицу. А вот с добавлением названий файлов и даты так и не получается. Сейчас видно, что файлы макрос перебирает, чтобы дату взять из D1 (всегда с первого листа,и единственного). Теперь нужно добавить же Paste, чтобы вставлялись даты и название файлов (годы) соответственно по строкам?
Доброго дня, друзья. Помогите, пожалуйста, со сборкой файла.
Требуется макросом собрать таблицы из файлов в одну таблицу в одном новом файле и добавить в эту новую таблицу названия файлов, из которых собрали данные в столбец,(например,в крайний справа), в каждую строку соответственно - чтобы понимать,какая строка из файла с каким названием. И второе , добавить в еще один столбец (например,также в крайний справа) , в каждую строку - дату соответствующего реестр (она в каждом файле в ячейке D1)
Примеры файлов для сборки во вложении. Размеры таблиц в них всегда небольшие.
Код есть основной но дальше не получается..
Код
Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
Set dirObj = mergeObj.Getfolder("C:\Users\HP\Downloads\сборка\")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
'вместо "A2" указывается адрес ячейки в каждом файле, с которой начинать сборку
'например, "B3:IV" объединит все данные из файлов, начиная с ячейки B3
Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Activate
'Здесь столбец не менять
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
everyObj.Name.Copy
Range("A65536").End(xlUp).Offset(1, -5).PasteSpecial
bookList.Close
Next
End Sub
Доброго времени суток. Форумчане, помогите сделать макрос, пожалуйста.
Нужно Макросом скопировать Только! таблицу Из Эксель в Ворд вставив во вторую строку,не удаляя остальной текст в документе. Поскольку нужно будет множить документы периодически, слияние и прочее не очень подходит (особенно , потому что таблица не переносится на следующую страницу в Ворд). Удобнее будет назначить кнопку на макрос и потом щелкать ее для создания документов.
Похожие макросы на форуме лишь похожие. Я пробовал редактировать, но возникает ошибка. Например, не нашел или не вижу в кодах команды для выбора второй строки в документе для вставки скопированной таблицы [b6:c51].
<
Код
Sub main()
Set wa = CreateObject("Word.Application")
wa.Visible = True: Set wd = wa.Documents.Open "C:\Users\HP\Downloads\РАСЧЕТ.docx"
[b6:c51].Copy
wd.Range.PasteExcelTable False, False, False
Application.CutCopyMode = False
End Sub
Добрые люди, приветствую! Кто может подсказать, как определить цвет диаграммы? При выборе ряда в коллекции цветов на ленте Excel используемый цвет не отображается, так как далек от стандартного. Ситуация: Есть график от руководства, построенный из шаблонов (Конструктор-Стили диаграмм), нужно в таком же стиле построит и другие графики. Проблема - при добавлении еще одной диграммы другого типа, либо даже дополнительного ряда форматирование "слетает".
Вобщем если что интерейсный полтергейст хорошо бы понять... Пока решение по вопросу топика какое-никакое есть, копирую все сводные , кроме последней, потом последнюю отдельно копирую, и так тогда получается.
копирую как где-то на форумах и пишут - спецвставка: 1) ширины столбов 2) значения и форматы 3) формулы 4) форматы (сначала всех сводных кроме последней, потом последнюю)
пробую....но стало еще интереснее - формат сводных копируется , копирую таблцы сразу пачкой, Но! из последней сводной формат не копируется( как такое может быть
Есть отчет в виде сводной. Нужно чтобы Детали (источник) получатель не мог увидеть (ни двойным щелчком по сводной, вобще никак) Возникли вопрос - можно ли скопировать формат сводных (сразу нескольких, без макроса)?
или может проще если это возможно удалять файл PivotCache (не могу понять где его найти). Думаю, что без PivotCache данные сводной можно будет видеть,если не обновлять. лучше конечно первый вариант. Второй может и быстрее,если он существует, но пользователь вдруг случайно нажмет Обновить и таблица без PivotCache обрушится.
{quote}{login=СердЖиГ}{date=19.03.2010 09:32}{thema=}{post}Пробовал использовать ABBYY PDF Transformer. Конвертирует нормально в Excel, в том числе и русский{/post}{/quote}
А кто может поделиться ссылкой? есь проблемы с установкой софта, Лучше на он-лайн сервис, но которому можно доверять, потому что спрашивают, чтобы прислали по электронной почте документ. Спасибо.
{quote}{login=гость}{date=02.11.2011 01:11}{thema=}{post}Как вариант: Чтобы вставить значения именно в те ячейки, из которых они скопированы (но в другой книге,), Вам надо как раз наоборот стереть все ячейки, в которых есть ненужная инф., а затем скопировать ВЕСЬ блок ячеек, а когда будете вставлять, то воспользоваться специальной вставкой ("пропускать пустые). Тогда Вы получите нужный результат{/post}{/quote}
Да, я также объяснил,значения в других строках также нужны, там же другие регионы, за которые отвечают другие люди, можно как вариант удалить только значения по региону Центр,добавить временно столбец, а потом соединить значения Но кажется должна быть какая-то функция, либо настройки, чтобы вставлять только в те ячейки, которые отобраны фильтром
Всем привет. Поиском найти не смог. А вопрос то вроде обычный..... Как скопироват результаты фильтра, например, как на фото, на другой лист, в котором стоит такой же фильтр по региону Центр. Копируются только те ячейки - результаты фильтра, а вот вставляются эти ячейки на другой лист подряд в каждую, а не в те что оотобраны фильтром. В данном примере , скажем, хочется обновить столбик с ФИО в другом файле по региону центр. Есть и другие способы, но копировать было бы удобнее и быстрее, если это возможно. Спасибо.