Друзья, привет.
Делаю форму автообновления отчета. Необходимо собрать из файла с определенного лист информацию.
Столкнулся с несколькими проблемами:
1) Необходимо проверить какой из 2х возможных названий листов используется в открытой таблице. Реализую через функцию проверки, но что то ошибка типов.
На строке CheckList = CheckListSub(NameFile) - выдает ошибку типов "ByRef argument type mismatch"
2) Нужно как то отметить цветом необходимые столбцы (в примере зеленым) и удалить все не отмеченные (красным).
Пока вообще не придумал как это сделать. У всех необходимых столбцов есть общее XQXX (X) (прим: Q3'18 (F) )
Комрады есть идеи, опыт, предложения?
Спасибо
Делаю форму автообновления отчета. Необходимо собрать из файла с определенного лист информацию.
Столкнулся с несколькими проблемами:
1) Необходимо проверить какой из 2х возможных названий листов используется в открытой таблице. Реализую через функцию проверки, но что то ошибка типов.
На строке CheckList = CheckListSub(NameFile) - выдает ошибку типов "ByRef argument type mismatch"
Код |
---|
' This book a have list? Function SheetExists(SheetName As String) As Boolean On Error Resume Next SheetExists = Not Sheets(SheetName) Is Nothing End Function ' Chek on Name List Function CheckListSub(SheetName As String) As String Dim wb As Workbook Set wb = SheetName CountList = 0 If SheetExists("Data") Then Set CheckList = wb.Worksheets("Data") CountList = CountList + 1 End If If SheetExists("Динамика KPIs") Then Set CheckList = wb.Worksheets("Динамика KPIs") CountList = CountList + 1 End If If CountList = 0 Then MsgBox "Оба листа отсутствуют" CheckList = "Error" End If If CountList = 2 Then MsgBox "Оба листа присутствуют" CheckList = "Error" End If End Function Sub GoData() Application.Calculation = xlCalculationManual avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 1, "Âûáåðèòå îò÷åò ", , False) If VarType(avFiles) = vbBoolean Then 'áûëà íàæàòà êíîïêà îòìåíû - âûõîä èç ïðîöåäóðû MsgBox "Íå âûáðàí èñòî÷íèê äàííûõ" Exit Sub End If Application.DisplayAlerts = False Application.ScreenUpdating = False i = InStrRev(avFiles, "\") NameFile = """ & Mid(avFiles, i + 1) & """ Workbooks.Open Filename:=avFiles Set Database = ActiveWorkbook CheckList = CheckListSub(NameFile) ActiveWindow.Close False Calculate Application.Calculation = xlAutomatic Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub |
Пока вообще не придумал как это сделать. У всех необходимых столбцов есть общее XQXX (X) (прим: Q3'18 (F) )
Комрады есть идеи, опыт, предложения?
Спасибо
невозможное делаем сразу, чудо - требует небольшой подготовки.