Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставить строки по условию из другого файла - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставить строки по условию из другого файла (Макросы/Sub)
Вставить строки по условию из другого файла
urlchik Дата: Понедельник, 11.06.2018, 11:34 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте!
Прошу помощи в нелегком для меня освоении ВБА!
С логикой вроде бы мне все ясно, а вот как эту логику перевести на язык ВБА - ...?
Возникло желание автоматизировать процесс подготовки документов для списания техники. Так как в конторе запрещено использовать сторонние приложения приходится все это придумывать в экселе. С помощью формул делал, но это не то чего хотелось бы и не все возможно сделать...
Есть два файла Инвентаризация и Утиль. Инвентаризация - основная таблица с данными; а вот Утиль - файл с документами для утилизации.
Пожелания описаны на страничках файла Утиль.
Не откажите, пожалуйста, лузеру (т.е. мне), естественно у кого есть время и желание помочь...
Заранее признателен и благодарен!
К сообщению приложен файл: 7494949.xlsx(11.8 Kb) · 4061492.xlsm(14.1 Kb)


Век живи - век учись!
 
Ответить
СообщениеЗдравствуйте!
Прошу помощи в нелегком для меня освоении ВБА!
С логикой вроде бы мне все ясно, а вот как эту логику перевести на язык ВБА - ...?
Возникло желание автоматизировать процесс подготовки документов для списания техники. Так как в конторе запрещено использовать сторонние приложения приходится все это придумывать в экселе. С помощью формул делал, но это не то чего хотелось бы и не все возможно сделать...
Есть два файла Инвентаризация и Утиль. Инвентаризация - основная таблица с данными; а вот Утиль - файл с документами для утилизации.
Пожелания описаны на страничках файла Утиль.
Не откажите, пожалуйста, лузеру (т.е. мне), естественно у кого есть время и желание помочь...
Заранее признателен и благодарен!

Автор - urlchik
Дата добавления - 11.06.2018 в 11:34
boa Дата: Понедельник, 11.06.2018, 13:33 | Сообщение № 2
Группа: Проверенные
Ранг: Новичок
Сообщений: 48
Репутация: 7 ±
Замечаний: 0% ±

2013, 2016
urlchik, для одного листа "ПротКом", я написал макрос,
для других попробуйте сами по образцу

[vba]
Код
Option Explicit

Sub Spisanie()
' макрос вставить в книгу Утиль.xlsm
Dim outData As Worksheet
Dim inData As Worksheet
Dim rRow As Range
Dim iRow&

    Set outData = Workbooks("Инвентаризация.xlsx").Worksheets("инв")   'лист откуда берем
    Set inData = ThisWorkbook.Worksheets("ПротКом")             'лист куда вставляем в книге Утиль

    iRow = 5    'первая строка с данными в протоколе
    For Each rRow In outData.UsedRange.Rows
        If rRow.Cells(10) = inData.Cells(4, 10) Then
            inData.Rows(iRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow  ' Вставляем строку
            'переносим данные удовлетворяющие условию "Март"
            inData.Cells(iRow, 1) = iRow - 4
            inData.Cells(iRow, 2) = rRow.Cells(2)
            inData.Cells(iRow, 3) = rRow.Cells(3)
            inData.Cells(iRow, 4) = rRow.Cells(4)
            inData.Cells(iRow, 5) = Year(rRow.Cells(5))
            inData.Cells(iRow, 6) = CDate(rRow.Cells(6))
            iRow = iRow + 1
        End If
    Next rRow
End Sub
End Sub
[/vba]




Сообщение отредактировал boa - Понедельник, 11.06.2018, 13:36
 
Ответить
Сообщениеurlchik, для одного листа "ПротКом", я написал макрос,
для других попробуйте сами по образцу

[vba]
Код
Option Explicit

Sub Spisanie()
' макрос вставить в книгу Утиль.xlsm
Dim outData As Worksheet
Dim inData As Worksheet
Dim rRow As Range
Dim iRow&

    Set outData = Workbooks("Инвентаризация.xlsx").Worksheets("инв")   'лист откуда берем
    Set inData = ThisWorkbook.Worksheets("ПротКом")             'лист куда вставляем в книге Утиль

    iRow = 5    'первая строка с данными в протоколе
    For Each rRow In outData.UsedRange.Rows
        If rRow.Cells(10) = inData.Cells(4, 10) Then
            inData.Rows(iRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow  ' Вставляем строку
            'переносим данные удовлетворяющие условию "Март"
            inData.Cells(iRow, 1) = iRow - 4
            inData.Cells(iRow, 2) = rRow.Cells(2)
            inData.Cells(iRow, 3) = rRow.Cells(3)
            inData.Cells(iRow, 4) = rRow.Cells(4)
            inData.Cells(iRow, 5) = Year(rRow.Cells(5))
            inData.Cells(iRow, 6) = CDate(rRow.Cells(6))
            iRow = iRow + 1
        End If
    Next rRow
End Sub
End Sub
[/vba]

Автор - boa
Дата добавления - 11.06.2018 в 13:33
urlchik Дата: Понедельник, 11.06.2018, 13:41 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
для одного листа "ПротКом", я написал макрос

Преогромная благодарность!!! Ща попробуем!

ВЫ ГЕНИЙ! И особая благодарность за пояснения в коде!!! Плюсую!


Век живи - век учись!
 
Ответить
Сообщение
для одного листа "ПротКом", я написал макрос

Преогромная благодарность!!! Ща попробуем!

ВЫ ГЕНИЙ! И особая благодарность за пояснения в коде!!! Плюсую!

Автор - urlchik
Дата добавления - 11.06.2018 в 13:41
urlchik Дата: Понедельник, 11.06.2018, 15:35 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
С ДрагМетом разобрался. Теперь бы с актом разобраться. Чтоб по очереди вставлял данные из ПротКом и кидал на печать...
Тут, как я понимаю нужен цикл... а это для меня еще страшнее :-(
К сообщению приложен файл: 2277314.xlsm(28.9 Kb)


Век живи - век учись!

Сообщение отредактировал urlchik - Понедельник, 11.06.2018, 15:35
 
Ответить
СообщениеС ДрагМетом разобрался. Теперь бы с актом разобраться. Чтоб по очереди вставлял данные из ПротКом и кидал на печать...
Тут, как я понимаю нужен цикл... а это для меня еще страшнее :-(

Автор - urlchik
Дата добавления - 11.06.2018 в 15:35
boa Дата: Понедельник, 11.06.2018, 20:25 | Сообщение № 5
Группа: Проверенные
Ранг: Новичок
Сообщений: 48
Репутация: 7 ±
Замечаний: 0% ±

2013, 2016
urlchik,
попробуйте преобразовать этот же макрос.
For Each rRow In outData.UsedRange.Rows ... Next - это и есть цикл по строкам. Только добавьте в код строку селекта ячейки внутри таблицы. Типа
[vba]
Код
inData.Range("B5").Select
[/vba]чтобы UsedRange правильно определился.

Макрорекодером запишите печать на ваш принтер(будет что-то типа ActiveWindow.SelectedSheets.PrintOut Copies:=1 ...) и вставьте в конце цикла, если надо печатать каждую строку отдельно(но тогда уберите добавление строк) или по выходу из цикла, если надо печатать все строки одновременно.




Сообщение отредактировал boa - Вторник, 12.06.2018, 20:02
 
Ответить
Сообщениеurlchik,
попробуйте преобразовать этот же макрос.
For Each rRow In outData.UsedRange.Rows ... Next - это и есть цикл по строкам. Только добавьте в код строку селекта ячейки внутри таблицы. Типа
[vba]
Код
inData.Range("B5").Select
[/vba]чтобы UsedRange правильно определился.

Макрорекодером запишите печать на ваш принтер(будет что-то типа ActiveWindow.SelectedSheets.PrintOut Copies:=1 ...) и вставьте в конце цикла, если надо печатать каждую строку отдельно(но тогда уберите добавление строк) или по выходу из цикла, если надо печатать все строки одновременно.

Автор - boa
Дата добавления - 11.06.2018 в 20:25
urlchik Дата: Вторник, 12.06.2018, 09:56 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
попробуйте преобразовать этот же макрос.

Спасибо! Буду пытаться!


Век живи - век учись!
 
Ответить
Сообщение
попробуйте преобразовать этот же макрос.

Спасибо! Буду пытаться!

Автор - urlchik
Дата добавления - 12.06.2018 в 09:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставить строки по условию из другого файла (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!