Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Копирование (сбор) данных из разных книг в одну., Сбор данных из множества книг в одну, при условии одинаковых листов.
 
Доброго времени суток. Задался вопросом о "сборе" данных из множества книг в одну.
Имеется книга с множеством листов, с которых данные собираются на сводный лист той же книги.
Сводный лист всегда постоянен, те же ячейки, строки и столбцы, названия листов, изменению подлежат только данные в ячейках.
Таких книг множество.
Необходимо реализовать след. задачу:
Сбор информации и данных из сводных листов множества книг в новую сводную книгу.
Иметь возможность выбора книг (одной или множества) или указания директории в которой находятся книги.
Добавление новых данных в сводную книгу осущ. в строчку ниже последней заполненной.
Время на реализацию данной задачи 5-7 дней.
Кто возьметься ? Откликнитесь..
Копирование (сбор) данных из разных книг в одну, Сбор данных из множества книг в одну, при условии одинаковых листов.
 
Доброго времени суток. Задался вопросом о "сборе" данных из множества книг в одну. Во всех книгах имеется лист , на котором собираются данные ( в основном ссылки с дуругих листов в книге). Строки, столбцы, на этом листе, во всех книгах постоянны. Как сделать так, что бы из всех "выбранных" книг, копировались данные (срока с данными) в другую, общую книгу. То есть из каждой новой книги информация копировалась бы в последующую строку, в новой книги.Почитал довольно много тем с похожим вопросом. Заинтересовался кодом ниже. Но есть проблемы: копирует не те строки которые необходимо+такое ощущение, что проводит поиск файлов эксель по всему компу. В чем проблема/ошибка, подскажите пожалуйста.
Код
 Sub Собрать_данные()
      Application.ScreenUpdating = False
    ' Макрос собирает данные на активном листе активной книги из всех листов "Форма" xls файлов заданной директории,
    Dim ImenaListovSbora: ImenaListovSbora = Array("Сводный_лист")
    Const FirstRow_Cel& = 4          ' Номер строки начала построения
    Const FirstRow& = 4              ' Номер строки начала сбора данных (ниже шапки)
    Dim i&, LastRow&, LastRow_Cel&
    Dim ShCel As Worksheet, Sh As Worksheet, wb_Tek As Workbook
    Dim MyPath$, MyFileName$, MyFullName$
    Set ShCel = ActiveSheet
    LastRow_Cel = FirstRow_Cel
    With ShCel
        i = .UsedRange.Rows.Count + .UsedRange.Row - 1
        If i < FirstRow_Cel Then i = FirstRow_Cel
        .Rows(FirstRow_Cel & ":" & i).ClearContents
    End With
    MyPath = Trim$(ShCel.[C1])
    If Right$(MyPath, 1) <> "" Then MyPath = MyPath & ""
    MyFileName = Dir(MyPath & "*.xls*")
    Do Until MyFileName = ""
        MyFullName = MyPath & MyFileName
        Set wb_Tek = Workbooks.Open(Filename:=MyFullName, UpdateLinks:=0, ReadOnly:=True)
        For Each Sh In wb_Tek.Worksheets
            For i = 0 To UBound(ImenaListovSbora)
                If Sh.Name = ImenaListovSbora(i) Then
                    With Sh
                        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
                        .Range(.Cells(FirstRow, 1), .Cells(LastRow, 8)).Copy
                        ShCel.Cells(LastRow_Cel, 1).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                        LastRow_Cel = LastRow_Cel + LastRow - FirstRow + 1
                    End With
                End If
            Next
        Next Sh
        wb_Tek.Close SaveChanges:=False
        MyFileName = Dir
    Loop
    With ShCel
        .Range(.Cells(LastRow_Cel - 1, 1), .Cells(LastRow_Cel - 1, 8)).Copy
        .Cells(LastRow_Cel, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
        .Cells(LastRow_Cel, 2).Select
    End With
End Sub
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
RAN, спасибо...я так и сделал, просто подумал что это не совсем верно...еще раз огромное спасибо за ответ.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Друзья, доброго времени суток, в продолжении данной темы, подскажите, как деактивировать данный макрос. То есть сделать так, что бы уже созданный колонтитул исчез при печати.
Сам код:
Код
Sub Signature2()            ' Макрос для проставления колонтитула (меняет колонтитул на всех листа)
Dim xSh As Worksheet
    For Each xSh In Worksheets
        CodSignature2 xSh
    Next
End Sub
 Sub CodSignature2(ws As Worksheet)
  With ws.PageSetup
    .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] & " № " & ['Ввод общих данных'!M7] & " " & ['Ввод общих данных'!H9] & " - " & ['Ввод общих данных'!H15]
    .CenterFooter = ""
    .RightFooter = "Лист  &P" & "     Листов &N  "
  End With
End Sub
Копирование (импорт) данных из одной книги в другую, Скопировать данные из одной книги в другую (листы, ячейки, одинаковые в обеих книгах)
 
JayBhagavan, Спасибо за подсказку, читаю, разбираюсь.
Копирование (импорт) данных из одной книги в другую, Скопировать данные из одной книги в другую (листы, ячейки, одинаковые в обеих книгах)
 
New, Спасибо большое. Вопрос, в принципе решен, за исключением маленьких особенностей. Листы заполняются некоректно. происходит смещение, пришлось удалять столбцы, и все заработало.
Макрос выполняет свою функцию.
И все же для своего собственного развития. Как написать код для книги2, что бы из нее запускать макрос и выбирать книгу1. Поясню почему спрашиваю. Книга 2 - более свежая и продвинутая версия книги1. Представленным макросом выше задача выполняется, но, приходиться открывать каждую книгу1 (а их может быть и 5 и 100 к примеру), прописывать код и переводить. Не проще ли открывать в более продвинутой версии, выбирать необходимый файл и проводить аналогичную процедуру, или же имеются какие то особенности, которые мешают выполнению данго условия? Как уже сказал, вопрос для самопонимания, но если его можно реализовать, подскажите пожалуйста как?
Копирование (импорт) данных из одной книги в другую, Скопировать данные из одной книги в другую (листы, ячейки, одинаковые в обеих книгах)
 
как и писал ранее...в макросах не силен...не совсем понимаю, что за вопрос Вы задали .....
Копирование (импорт) данных из одной книги в другую, Скопировать данные из одной книги в другую (листы, ячейки, одинаковые в обеих книгах)
 
Доброго времени суток. Возник вопрос. Имеются 2 книги эксель. Обе книги одинаковые по способу заполнения. Книга 1 более ранний версии. Книга 2 боле поздней версии. Листы и ячейки которые необходимо скопировать (импортировать) в обеих книгах одинаковые. Наименования листов в книгах одинаковые. Расположение ячеек на листах одинаковые.
Вопрос такой: При открытой книги 2, необходимо вызвать диалоговое окно, для выбора книги (в данном случае книга 1), и после выбора, перенести данные с 4-6-ти определенных листов по тем же самым "координатам".
Использовал вот такой код.....но почему то пишет "нет такого листа". (в макросах не силен....только разбираюсь)...помогите пожалуйста...
код:
Код
Function GetFileName(Optional ByVal Title As String)
    If Not IsMissing(InitialPath) Then
        On Error Resume Next: ChDrive Left(InitialPath, 1)
        ChDir InitialPath    ' выбираем стартовую папку
    End If
    res = Application.GetOpenFilename(MyFilter, , Title, "Открыть")  ' вывод диалогового окна
    GetFileName = IIf(VarType(res) = vbBoolean, "", res)    ' пустая строка при отказе от выбора
End Function
Sub AttachFile_test()    ' пример использования
    Application.ScreenUpdating = False
    Filename$ = GetFileName
    If Filename$ = "" Then Exit Sub
'    MsgBox "Выбран файл: " & Filename$
    On Error Resume Next
        Set sh = ThisWorkbook.Sheets(Application.Caller)
        If Err <> 0 Then MsgBox "Нет такого листа": Exit Sub
    On Error GoTo 0
    Set openWb = Workbooks.Open(Filename$)
    sh.UsedRange.Clear
    openWb.ActiveSheet.UsedRange.Copy sh.[a1]
    openWb.Close False
    Application.ScreenUpdating = True
End Sub
Вставка картинок с помощью макроса и подгон размера картинок под размер ячеек (пакетно)
 
Доброго времени суток. Нашел на просторах сети пост о том как можно с помощью макроса вставлять картинки в ячейки, подгоняя (картинки) под размер ячейки. Задался вопросом, а можно ли, используя этот макрос, дополнить его, и вставлять картинки пакетно (сразу несколько штук). В приложенном файле на листе1 воплощен макрос по вставке картинок, работает по след. принципу, выбираете ячейку, нажимаете кнопку "вставить фото", выбираете картинку, и она в ячейке, подогнаная под размер ячейки. Особенность заключается в том, что макрос рассчитан на диапазон ячеек "D2:G2". и если картинка вставлена в ячейку D2 а вы выбираете ячейку D7, макрос вставляет картинку в D7, но удаляет картинку  из D2.
Вопрос в следующем:
1. Как сделать так, что бы вставлять картинки можно было в те ячейки которые выбрал, то есть в любую ячейку.
2. Как будет выглядеть код, для удаления всех вставленных на данный лист картинок.
3. Как (если возможно) вставлять картинки пакетно, на листе2, в объедененные ячейки? То есть нажать на кнопку, выбрать к примеру 7 файлов, а макрос вставит их в объедененные ячейки в номерной последовательности , которая указанна в ячейках.
Макрос сохранения отдельных листов в общем файле формата PDF, Работа с VBA
 
RAN, подскажите куда подставить то. Я туповат в макросах, только разбираться начал.
я так понимаю эта строчка
Код
If Sheet1.Range("A1").Value = 0 Then
должна стать перед
Код
'здесь укажите, какие листы нужно сохранить в PDF    
Worksheets(Array("Лист1", "Лист3")).Select
Макрос сохранения отдельных листов в общем файле формата PDF, Работа с VBA
 
а вот такой вопрос, что добавить в макрос, что бы получилось условие для печати: при значении ячейки =0 сохраняем 3 листа, а при значении =1, сохраняем 4 листа?
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Ігор Гончаренко, Имеется книга. На листе7 вводятся данные, номер и дата.
На листе "Тит_лист" имеется кнопка 1, которая запускает выполнение макроса, применяемое к 5ти оставшимся листам, в том числе и созданию колонтитула.
Вопрос, как сделать так, что бы колонтитул, отображался на выбранных листах (выбор осуществляется оператором, то есть их может быть 2, а могут быть и все 5) так же как на листе "Тит_лист".
В дополнение ко всему: это только часть файла. В оригинальном файле около 150 листов (какие то скрыты, какие то нет.) На печать в ПДФ идут 15,,,,20 листов выбранные оператором. При нажатии конпки1 в основном фале, на выполнение макроса уходит около 1...1,5 минут, и это при условии, что макрос на автоматический выбор листов и создание ПДФ еще не написан.
Изменено: rumpelshtitchen - 13.07.2022 17:17:50
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Дмитрий(The_Prist) Щербаков, к большому сожалению, должен признать, что не ясны мне переменные...и листы. Скопировать и просто вставить было бы просто, в оправдание могу сказать, я бы не раздувал такую большую тему. А пошел в неправильном направлении и искал зависимость в листах....а не в переменной. Трудно понять, как это все работает, по этому и нет понимания, к сожалению. Огромное спасибо за помощь и объяснение.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Дмитрий(The_Prist) Щербаков, Вы верно объяснили задачу, которую я не смог в должной степени донести, необходимо пройтись по всем выделенным листам и на них проставить колонтитул. Выбор листов произвольный, то есть сам оператор, ручками, выбирает необходимые ему листы, на которых и должен отображаться колонтитул.
Взяв за основу Ваш кусоче кода написал вот такой код
Код
Sub Signature()Dim xSh As Worksheet
    For Each ws In ActiveWindow.SelectedSheets
    CodSignature xSh
    Next
End Sub
 Sub CodSignature(ws As Worksheet)
    With ws.PageSetup
    .LeftFooter = "               Øèôð: " & ['Ââîä îáùèõ äàííûõ'!H19] & " ¹ " & ['Ââîä îáùèõ äàííûõ'!M7] & " " & ['Ââîä îáùèõ äàííûõ'!H9] & " - " & ['Ââîä îáùèõ äàííûõ'!H15]
    .CenterFooter = ""
    .RightFooter = "Ëèñò  &P" & "     Ëèñòîâ &N  "
  End With
End Sub
при выполнении выдает ошибку, понимаю, что где то не верно указан параметр "листов" и предположу что в данном месте:
Код
 Sub CodSignature(ws As Worksheet)

но в чем ошибка....не могу понять, хоть убей..

Изменено: rumpelshtitchen - 13.07.2022 12:23:07
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Ігор Гончаренко, проблема заключается в следующем. В книге около 150 листов. и я так понимаю при условии "worksheet", макрос применяет их, ко всем 150 листам, книжка повисает....и.....все. А по условию, необходимо отобразить колонтитул на 15,,,20 листах, которые выбираются вручную (впоследствии через макрос). Именно по этому и задаю вопрос про СЕЛЕКТ да и про ВОРКШИТ, что бы понять как это все работает.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
А вот еще вопрос назрел. А как будет выглядеть строчка для конкретно выбранных листов. Select ?  я втак понял что "worksheet" это рабочие листы, если я правильно понял это все листы в книге.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Ігор Гончаренко, задал необходимый формат вручную, как Вы и советовали, получил необходимую строчку .Font.Italic = True....данную строку переставлял и до и после...
Код
with ws                         .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
    .CenterFooter = ""
    .RightFooter = "Лист  &P" & "     Листов &N  "
ни чего не получается. Где я ошибаюсь, подскажите, направьте пожалуйста.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Цитата
написал:
Sub Signature()                           Dim xSh As Worksheet    For Each xSh In Worksheets        CodSignature xSh    NextEnd Sub Sub CodSignature(ws as worksheet)          with ws                         .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19]     .CenterFooter = ""    .RightFooter = "Лист  &P" & "     Листов &N  "  End WithEnd Sub
Вот, я совсем запутался...вопрос, для понимания:
что такое xSh?
если я правильно понял, та даннаое выражение "ws as worksheet" это сокращение, то есть мы присваиваем значению "ws" условие "worksheet"?
куда, а главное почему мы избавились от "PageSetup"?
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Ігор Гончаренко, Благодарю, буду пробовать.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Цитата
написал:
Sub CodSignature(ws as worksheet)  
Выдает ошибку, в данном месте...что при выборе одного листа, что при выборе нескольких.
Изменено: rumpelshtitchen - 13.07.2022 09:57:42
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Ігор Гончаренко, Благодарю за ответ. Но вопрос про форматирование текста остается интересным исключительно для собственного понимания, то есть, не просто скопировать макрос что бы он работал, а понять, как правильно написать код, куда вставить необходимые строки, что бы можно было изменить форматирование.
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
И тут же, возник еще один вопрос касаемо колонтитула, объясните пожалуйста, где дописать код (условия) для текста (жирный, курсив и т.д.)
Изменено: rumpelshtitchen - 13.07.2022 09:19:21
Колонтитул листа (макрос отображения для нескольких, выбранных листов книги
 
Доброго времени суток. Подскажите решение след. задачи.
Необходимо сделать колонтитул на определенные (выбранные) листы книги.
То есть, что бы при сохранении выбранных листов в PDF отображался колонтитул. На просторах интернета нашел код для написания макроса. Но не могу решить проблему отображения колонтитула на НЕСКОЛЬКИХ (определенных/ выбранных листах). Листы, на данный момент выбираются вруную, впоследствии, листы будут выбираться автоматически с помощью макроса. Подскажите, что добавить в код, что бы отображение происходило на всех необходимых листах.
Код изначально был вот такой:
Код
Sub Signature()                             'Для колонтитула
   With ActiveSheet.PageSetup
       .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
       .CenterFooter = ""
       .RightFooter = "Лист  &P" & "     Листов &N  "
   End With
End Sub
"Поковырявшись", нашел вот такой вариант.....но он выкидывает ошибку...
Код
Sub Signature()                           
Dim xSh As Worksheet
    Application.ScreenUpdating = False
    For Each xSh In Worksheets
        xSh.Select
        Call CodSignature
    Next
    Application.ScreenUpdating = True
End Sub
Sub CodSignature()                             
       .LeftFooter = "               Шифр: " & ['Ввод общих данных'!H19] 
       .CenterFooter = ""
       .RightFooter = "Лист  &P" & "     Листов &N  "
   End With
End Sub
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Ігор Гончаренко, Благодарю за помощь, разобрался, действительно, глупость.
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Ігор Гончаренко, Правильно ли я понимаю, мы избавились от активного листа (ActiveSheet)?
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Ігор Гончаренко, При нажати на кнопку на листе2, макрос должен скрывать строки отмеченные "х" (в столбце А) на листе "Поясн. запис."
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Ігор Гончаренко, это я усвоил, остальные макросы работают (так как Вы и говорили в другой теме), написал вот такой макрос
Код
Sub Sborka()
    RunVisota
    Skryt
    Skryt2
End Sub
но вот проблема именно с выполнением данного условия (скрытие строк) макроса "Skryt" и именно с другого листа....
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Ігор Гончаренко, запускаться макрос будет в составе "большого, общего" макроса, в котором будет присутствовать, другие макросы, для других листов. Задача, запустить выполнение с отдельного листа .
Файл приложить не могу...весит 8 Мб....приложу "кусочек"
Изменено: rumpelshtitchen - 12.07.2022 22:11:57
Макрос для скрытия строк по условию (не работает, если запускать с другого листа)
 
Доброго времени суток. Подскажите в чем ошибка.
Имеется макрос для скрытия строк по условию (проверяет наличие "Х" в первом столбике, и там где это условие выполняется, строка скрывается.  
Если запустить макрос на необходимом листе, все работает, но если запустить его выполнение с другого листа, выполняется только первая часть макроса (перенос текста в ячейке), а вот скрытие ячеек не выполняется.
Я так понимаю неверно расставил "With" и "End With"....?
Перенес "End With" перед "Application.ScreenUpdating = True", ни чего не поменялось...не работает....

Код
Sub Skryt()
    With Worksheets("Поясн. запис.")
    .Range("c10", "f68").WrapText = True
  End With
        Dim cell As Range
    Application.ScreenUpdating = False                              'отключаем обновление экрана для ускорения
    For Each cell In ActiveSheet.UsedRange.Rows(1).Cells            'проходим по всем ячейкам первой строки
        If cell.Value = "x" Then cell.EntireColumn.Hidden = True    'если в ячейке x - скрываем столбец
    Next
    For Each cell In ActiveSheet.UsedRange.Columns(1).Cells         'проходим по всем ячейкам первого столбца
        If cell.Value = "x" Then cell.EntireRow.Hidden = True       'если в ячейке x - скрываем строку
    Next
      Application.ScreenUpdating = True
    End Sub

Изменено: rumpelshtitchen - 12.07.2022 21:50:28
Подбор высоты объеденных ячеек (в определенном диапазоне строк)
 
Ігор Гончаренко, виноват, создам отдельную тему
Страницы: 1 2 3 4 5 След.
Наверх