Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2013, 23:02   #1
polysster
 
Регистрация: 13.08.2013
Сообщений: 7
По умолчанию Создание макроса для выполнения отчетности в несколько кликов!

Доброго времени суток! Нуждаюсь в помощи написания макроса! Нужно составить отчет (сегментация) из данных выгруженных в txt.
Суть такова, есть три книги, вернее две, и txt файлы, которые мною вручную преобразовывается в еще одну книгу. Первая книга содержит перечень подразделений в формате: 1-я срока - код подразделения, 2-я срока - название подразделения. Вторая книга содержит отчет (преобразованный из txt в xls) из 11-ти столбцов, из которых 1-ый и 5-ый основные, то есть именно по ним выполняется сортировка и заполняется третяя книга, которая, в свою очередь имеет 6-ть листов.
Сейчас я большую часть выполняю вручную, расскажу свой алгоритм:
- загружаю txt файл, преобразовываю его в xls;
- готовый отчет форматирую макросом таким образом, чтобы 6-ой столбец отчета из числового значения поменялся на текстовый из ПЕРВОЙ книги (то есть вместо кода подразделения выводилось его название);
- далее сортирую по 1-му столбцу отдельно по каждому сегменту (5-ый столбец, всего 4 сегмента) и копирую в ТРЕТЬЮ книгу на лист, соответствующий каждому сегменту;
- в конце привожу таблицы в третьей книге в эстетический вид.

Есть куски макросов, прошу помочь дописать недостающие, и объеденить все в один нормально работающий!)

Идея заключается в том, чтобы начиналось все с кнопки выбора txt файла, загрузки и его преобразования в excel формат, замены числовых значений в текстовые (6-ой столбец), заполнения таблиц соответственно сортировки, и заканчивалось сохранением в папке с определенным именем (имя папки и файла соответствовало коду и названию подразделения).

Вроде все!

Понимаю, что макрос не маленький, но все же надеюсь на помощь. Выкладываю три исходных файла и конечный результат, а также куски макросов какими пользуюсь, и которые нашел для решения отдельных задач.

Макрос заполнения формы и сохранения по папкам:

Код HTML:
Sub ЗаполнениеДокументов()

    Set wsS = Worksheets("Список")
    
    sPath = ThisWorkbook.Path & "\Отчет\"
    If Dir(sPath, vbDirectory) = "" Then
        MkDir sPath
    End If
    
    iRow = 3
    Do While wsS.Cells(iRow, 1) <> ""
        
        Set wbn = Workbooks.Add
        ThisWorkbook.Worksheets("ТУТ ЕЩЕ НЕ РАЗОБРАЛСЯ").Copy After:=wbn.Worksheets(wbn.Worksheets.Count)
        Set wsT = wbn.Worksheets(wbn.Worksheets.Count)
        wsT.Name = wsS.Cells(iRow, 1)
        
        wsT.Cells(15, 2) = wsS.Cells(iRow, 2)
        wsT.Cells(22, 2) = wsS.Cells(iRow, 4)
        wsT.Cells(26, 3) = wsS.Cells(iRow, 3)
        wsT.Cells(8, 9) = wsS.Cells(iRow, 5)
        wsT.Cells(8, 10) = wsS.Cells(iRow, 6)
        
        sFolder = "" & wsS.Cells(iRow, 1) & " - " & wsS.Cells(iRow, 2)
        MkDir (sPath & sFolder)
        
        wbn.SaveAs (sPath & sFolder & "\" & wsS.Cells(iRow, 2))
        wbn.Close
        
        iRow = iRow + 1
    Loop
    
End Sub
Макрос добавления строк подтягиванием:

Код HTML:
Sub Resize()
'
' Resize Макрос
' Добавление строк в таблицу протягиванием.

    ActiveSheet.ListObjects("AAA").Resize _
  Range("$A$1:$J$" & Sheets("BBB").Range("A" & Sheets("BBB").Rows.Count).End(xlUp).Row - 1)
End Sub
Макрос для выбора файла (только не знаю как файл загрузить и преобразовать):

Код HTML:
Sub AttachFile_test()    ' пример использования
   Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
    MsgBox "Выбран файл: " & Filename$
End Sub

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "c:\", _
                     Optional ByVal FilterDescription As String = "Файлы счетов", _
                     Optional ByVal FilterExtention As String = "*.*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title:
        .InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
        folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
        SaveSetting Application.Name, "GetFilePath", "folder", folder$
    End With
End Function
Остальные в самих файлах!
polysster вне форума Ответить с цитированием
Старый 14.08.2013, 23:08   #2
polysster
 
Регистрация: 13.08.2013
Сообщений: 7
По умолчанию

Сами файлы в архиве!)
Вложения
Тип файла: rar ОТЧЕТ.rar (62.3 Кб, 11 просмотров)
polysster вне форума Ответить с цитированием
Старый 14.08.2013, 23:16   #3
polysster
 
Регистрация: 13.08.2013
Сообщений: 7
По умолчанию

Возможно хотя бы кто-нибудь подскажет макрос заполнения таблиц данными с другой таблицы!

Последний раз редактировалось polysster; 14.08.2013 в 23:38.
polysster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание макроса для обновление прайса Magicmax Microsoft Office Excel 5 21.06.2010 19:59
Как отметить несколько строк для выполнения макроса Vitaliy87 Microsoft Office Excel 8 07.02.2010 15:17
Создание отчетности IceMann Microsoft Office Word 3 26.05.2009 15:17
Создание SetUp для макроса Romuald Microsoft Office Excel 3 06.06.2008 12:23