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

Вход

Регистрация

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

 

= Мир MS Excel/Создание Excel файлов по шаблону с автозаполнением данных - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание Excel файлов по шаблону с автозаполнением данных (Макросы/Sub)
Создание Excel файлов по шаблону с автозаполнением данных
NoNameLogin Дата: Пятница, 06.05.2022, 11:21 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте всем.

Для работы мне необходимо создавать много Excel файлов по шаблону, но с некоторыми отличными данными. В одном таком Excel файле есть несколько листов, которые так же создаются по шаблону и имеют некоторые различные данные. В данный момент я создал шаблон файла, где на 1ом листе вписываю все данные, которые автоматически заполняются по остальным листам. Но так же есть данные, которые необходимо взять из Базы данных. На 1ом листе я пишу № пункта из этой базы данных и далее через формулу ЕСЛИМН в ячейках возвращаются нужные мне данные из Базы данных. Таким образом, по каждому файлу приходится работать отдельно.
Я бы хотел сделать 1 общий файл Excel, в котором бы прописывал все данные и № пунктов из БАзы данных, после чего, по "нажатию кнопки" создавались бы листы Excel, где все было бы уже заполнено. Здесь уже формулами не обойтись, нужно использовать VBA. Может ли кто нибудь, пожалуйста, помочь с решением этой проблемы. То есть описать принцип, по которому я бы мог самостоятельно всё это сделать.

Прикрепляю примеры (условные), как у меня это сделано сейчас. 2 файла, каждый в 2х форматах (2019 и 2003)
К сообщению приложен файл: 5004710.xls(28.0 Kb) · 0596729.xls(29.0 Kb) · 8961307.xlsx(10.7 Kb) · 9965962.xlsx(12.8 Kb)
 
Ответить
СообщениеЗдравствуйте всем.

Для работы мне необходимо создавать много Excel файлов по шаблону, но с некоторыми отличными данными. В одном таком Excel файле есть несколько листов, которые так же создаются по шаблону и имеют некоторые различные данные. В данный момент я создал шаблон файла, где на 1ом листе вписываю все данные, которые автоматически заполняются по остальным листам. Но так же есть данные, которые необходимо взять из Базы данных. На 1ом листе я пишу № пункта из этой базы данных и далее через формулу ЕСЛИМН в ячейках возвращаются нужные мне данные из Базы данных. Таким образом, по каждому файлу приходится работать отдельно.
Я бы хотел сделать 1 общий файл Excel, в котором бы прописывал все данные и № пунктов из БАзы данных, после чего, по "нажатию кнопки" создавались бы листы Excel, где все было бы уже заполнено. Здесь уже формулами не обойтись, нужно использовать VBA. Может ли кто нибудь, пожалуйста, помочь с решением этой проблемы. То есть описать принцип, по которому я бы мог самостоятельно всё это сделать.

Прикрепляю примеры (условные), как у меня это сделано сейчас. 2 файла, каждый в 2х форматах (2019 и 2003)

Автор - NoNameLogin
Дата добавления - 06.05.2022 в 11:21
jun Дата: Суббота, 07.05.2022, 10:07 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 8 ±
Замечаний: 0% ±

NoNameLogin, приветствую!
можно например так (подразумевается положение ячеек на первом листе так же как и в примере):
[vba]
Код
Sub РазнестиПоЛистам()
Dim arr, i, j, lr, title, sht As Worksheet
With ThisWorkbook.Worksheets("Данные")
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr = .Range(.Cells(4, 2), .Cells(5, lr)): title = .Range("C3:E3")
End With
    For i = LBound(arr, 1) To UBound(arr, 1)
        Set sht = ThisWorkbook.Worksheets.Add(after:=Sheets(Sheets.Count))
        sht.Name = arr(i, 1): lr = 3
    With sht
        .Cells(2, 4).Resize(1, UBound(title, 2)) = title
        For j = 2 To UBound(arr, 2)
            .Cells(3, lr + 1) = arr(i, j): lr = lr + 1
        Next j
    End With
    Next i
End Sub
[/vba]
К сообщению приложен файл: primer.xls(38.5 Kb)


Сообщение отредактировал jun - Суббота, 07.05.2022, 10:09
 
Ответить
СообщениеNoNameLogin, приветствую!
можно например так (подразумевается положение ячеек на первом листе так же как и в примере):
[vba]
Код
Sub РазнестиПоЛистам()
Dim arr, i, j, lr, title, sht As Worksheet
With ThisWorkbook.Worksheets("Данные")
    lr = .Cells(.Rows.Count, 2).End(xlUp).Row
    arr = .Range(.Cells(4, 2), .Cells(5, lr)): title = .Range("C3:E3")
End With
    For i = LBound(arr, 1) To UBound(arr, 1)
        Set sht = ThisWorkbook.Worksheets.Add(after:=Sheets(Sheets.Count))
        sht.Name = arr(i, 1): lr = 3
    With sht
        .Cells(2, 4).Resize(1, UBound(title, 2)) = title
        For j = 2 To UBound(arr, 2)
            .Cells(3, lr + 1) = arr(i, j): lr = lr + 1
        Next j
    End With
    Next i
End Sub
[/vba]

Автор - jun
Дата добавления - 07.05.2022 в 10:07
NoNameLogin Дата: Воскресенье, 08.05.2022, 08:30 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

jun, Спасибо большое, обязательно опробую! Эксель и вба оказались очень интересными вещами, прям хочется сидеть и разбираться.
 
Ответить
Сообщениеjun, Спасибо большое, обязательно опробую! Эксель и вба оказались очень интересными вещами, прям хочется сидеть и разбираться.

Автор - NoNameLogin
Дата добавления - 08.05.2022 в 08:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание Excel файлов по шаблону с автозаполнением данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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