Создание нескольких отчетов с использованием мастер-файла с данными из нескольких файлов - PullRequest
0 голосов
/ 03 января 2019

Я создал основной отчет Excel с 5 основными вкладками, 3 из которых содержат несколько сводок, которые извлекают свои данные из 3 отдельных файлов CSV. Файлы CSV не имеют единого общего знаменателя и не могут быть объединены. Мне нужно повторить мастер ~ 500 раз для разных пользователей. Каждый пользователь может видеть только свою собственную информацию. Есть предложения?

До сих пор я думал о том, чтобы добавить 4 дополнительные вкладки в основной файл - 3, содержащие данные для каждой из сводных вкладок, и одну, которую я использую в качестве контрольной - из-за количества файлов, на которые я разбиваю их меньшие группы и используя имена из диапазона с переменным размером. В настоящее время я пытаюсь написать код, который будет:

  1. сохранить отдельные копии мастер-файла
  2. фильтр CSV копирует только одного отдельного пользователя за раз данные на соответствующую вкладку данных соответствующего пользовательского отчета
  3. обновить стержни
  4. удалить лишние вкладки

Пока мне удалось сделать только шаг 1.

Sub SaveUserReports()
  Dim wb As Workbook
  Dim rNames As Range, c As Range, r As Range

  'Current file's list of names and ids on sheet1.
  Set rNames = Worksheets("Control_Room").Range("K8", Worksheets("Control_Room").Range("K8").End(xlDown))
  'Path and name to master workbook to open for copy, saveas.
  Set wb = Workbooks.Open(ThisWorkbook.Path & "\TestCopy2.xlsx")

  For Each c In rNames
    With wb
      .Worksheets("Control_Room").Range("k8").Value = c
      'Path and name for copied workbook
      .SaveAs filename:=ThisWorkbook.Path & "\UserReports\" & c.Value & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End With
    Set wb = ActiveWorkbook
  Next c
  wb.Close
End Sub

Не могли бы вы помочь мне с шагами 2-4 или предложить какие-либо альтернативы? Я открыт для любого работающего автоматизированного решения.

Для шагов 2-4 у меня есть (только с 1 из CSV, так как я могу повторить его, как только я получу его на работу):

Sub Import_Data()

    Application.ScreenUpdating = False

    Dim GBR_Code As Range
    Dim row As Long
    Dim col As Long
    Dim ImportString As String
    Dim wb As Workbook
    Dim destwb As Workbook
    Dim rNames As Range, c As Range
    Dim iCol As Long
    Dim lo As Range


    Set rNames = ThisWorkbook.Worksheets("Control_Room").Range("K8:K9")
    Set destwb = Workbooks.Open(ThisWorkbook.Path & "\" & "November GBR.xlsx")
    Set lo = destwb.Sheets("GBR_Data").UsedRange
    iCol = 1

      For Each c In rNames
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\UserReports\" & c.Value & ".xlsx")
        wb.Worksheets("Control_Room").Range("k8").Value = c
        Set wb = ActiveWorkbook
        destwb.Sheets("GBR_Data").UsedRange.AutoFilter Field:=iCol, Criteria1:=c

        wb.Worksheets("GBR_Data").UsedRange.Clear

          'Copy GBR data from data workbook into report workbook
        destwb.Worksheets("GBR_Data").Range("A2:V100000").SpecialCells(xlCellTypeVisible).Copy wb.Sheets("GBR_Data").Range("A2")



NewWkb.Sheets("Overview").PivotTables("PivotTable1").RefreshTable

NewWkb.Sheets("Overview").PivotTables("PivotTable2").RefreshTable

NewWkb.Sheets("Overview").PivotTables("PivotTable3").RefreshTable

NewWkb.Sheets("Overview").PivotTables("PivotTable4").RefreshTable

NewWkb.Sheets("Overview").PivotTables("PivotTable5").RefreshTable

NewWkb.Sheets("Overview").PivotTables("PivotTable6").RefreshTable


          'Application.DisplayAlerts = False
          'NewWkb.Sheets("GBR_Data").Delete
          'Application.DisplayAlerts = True


          wb.Close SaveChanges = True

      Next c


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...