Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Обращение к элементам HTML внутри Inframe
 
Здравствуйте, уважаемые знатоки!.
Как обратиться к элементам страницы HTML внутри inframe.
Код страницы сайта прикладываю.
В итоге необходимо с помощью VBA заполнить форму с логином и паролем и нажать вход.
Решение нашел:
Код
Dim workFrame As HTMLIFrame
Dim objShell As Object, oWin As Object
Dim HTMLDoc As HTMLDocument
Dim ie As InternetExplorer

url = "http://..."
    Set ie = New SHDocVw.InternetExplorer
    ie.Visible = True
    ie.navigate url
    

Set workFrame = ie.document.getElementById("PageContent")
Set HTMLDoc = workFrame.contentWindow.document
HTMLDoc.getElementById("username").Value = 1
Изменено: mzaytsev - 10.09.2020 13:44:47
Выбор элементов списка в HTML через VBA
 
Wild.Godlike,Пришлось удалить, т.к. кто-то в файле запускал макрос, который отправляет сообщение на рабочую рассылку.
Задачу, кстати, решил сам, оставлю код на случай, если кому пригодиться.
Код
objIE.Document.getElementsByTagName("select")(0).Value = "0"
For j = 0 To 17
a = objIE.Document.getElementsByTagName("select")(0).Children(j).Value
For i = a To a
Select Case i
Case Is = 86, 83, 85, 84
  With objIE.Document.getElementsByTagName("select")(0)
    .Children(j).Selected = True
  End With
End Select
Next
Next
Изменено: mzaytsev - 22.04.2019 15:25:38
Выбор элементов списка в HTML через VBA
 
Может хотя бы кто-нибудь сможет подсказать, почему этот код не работает
Код
 With .Document.getElementById("QueuesForReportsSelected")
    .Value(85).Selected = True
    .Value(84).Selected = True
    .Value(86).Selected = True
End With
Вот этот работает:
Код
With objIE.Document.getElementsByTagName("select")(0)    .Children(5).Selected = True
    .Children(6).Selected = True
    .Children(7).Selected = True
    .Children(8).Selected = True
    .Children(9).Selected = True
    .Children(10).Selected = True
    .Children(13).Selected = True
End With
Первый код должен выбирать по значению поле value, второй код выбирает порядковый номер элемента списка, это не совсем подходит для решения задачи.
Изменено: mzaytsev - 19.04.2019 12:25:47
Выбор элементов списка в HTML через VBA
 
Можно посмотреть в любом макросе, который начинается с "RequestReport..."
Изменено: mzaytsev - 19.04.2019 11:25:37
Выбор элементов списка в HTML через VBA
 
Да, если выбирать не макросом, а вручную, то выбор нескольких элементов возможен
Выбор элементов списка в HTML через VBA
 
 
Добрый день.
Есть задача, из списка на странице выбрать несколько значений списка.
Сейчас используется код, но он выбирает только 1 элемент списка:
Код
.document.getElementById("QueuesForReportsSelected").Value = 85

Были попытки сделать множественный выбор кодом:

Код
 With objIE.document.getElementsByTagName("select")(43)
    .Children(83).Selected = True
    .Children(56).Selected = True
    .Children(98).Selected = TrueEnd
 With

С данным кодом макрос не работает.
Подскажите пожалуйста, как можно решить эту задачу.
Изменено: mzaytsev - 19.04.2019 09:48:10
Как применить оператор On Error при возникновении ошибок?
 
Sanja, еще раз большое спасибо за помощь) Так на самом деле лучше!)
Как применить оператор On Error при возникновении ошибок?
 
Sanja,Спасибо большое. Добился нужного результата немного подредактировав Ваш код:
Код
  Set POSR = Workbooks("AutoReport_Din").Worksheets("Выгрузка_POSReport")
On Error Resume Next
For j = 2 To lLastRow - 1
    If Not IsEmpty(POSR.Cells(j, 1)) Then
    d = POSR.Cells(j, 1).Value
    Workbooks(strFileName2).Worksheets("Сводная").Activate
        Set clf = Worksheets("Сводная").Columns(1).Find(What:=CDate(d), LookIn:=xlValues)  ' поиск даты
        If Not clf Is Nothing Then
            Workbooks(strFileName2).Worksheets("Сводная").Cells(clf.Row, 2).Copy
            POSR.Cells(j, 13).PasteSpecial Paste:=xlPasteValues
        End If
    End If
Next
Изменено: mzaytsev - 25.10.2017 09:49:30
Как применить оператор On Error при возникновении ошибок?
 
Спасибо, завтра попробую.  
Как применить оператор On Error при возникновении ошибок?
 
Не подходит, потому что в таком случае, макрос просто переходит на новую строчку и получается в отчет вставит значение за прошлую дату, а должен сразу переходить на Next в случае если дата не найдена.
Как применить оператор On Error при возникновении ошибок?
 
Файл выложить не могу, запрет в организации. Суть макроса в следующем: Из одного файла копируются данные в отчет, бывает, что в файле некоторые дни отсутствуют, в данном случае макрос должен пропускать отсутствующий день и переходить к следующему. Ошибка возникает на строке 9, т.к. не находит значение d (даты). Хотелось бы, чтобы в подобном случае, макрос переходил на строку 22 (брал следующий день), сейчас же макрос переходит на 22 строку только при первом срабатывании ошибки, т.е. когда не находит дату.
Как применить оператор On Error при возникновении ошибок?
 

Добрый день.

Прошу помощи, подскажите пожалуйста, почему в коде ниже возникает ошибка "object variable or with block variable not set"

Хотелось бы чтобы макрос пропускал и брал следующее значение если не находил текущее искомое.

Оператор On Error срабатывает только один раз и пропускает значение которое не нашел, на втором круге цикла возникает ошибка "object variable or with block variable not set"

Код
For j = 2 To lLastRow - 1
Workbooks("AutoReport_Din").Worksheets("Выгрузка_POSReport").Activate
On Error GoTo errH1
If Not IsEmpty(Cells(j, 1)) Then
On Error GoTo errH2
d = Cells(j, 1).Value
End If
Workbooks(strFileName2).Worksheets("Сводная").Activate
               Set clf = Worksheets("Сводная").Columns(1).Find(What:=d, After:=ActiveCell, LookIn:=xlFormulas, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
                        SearchFormat:=False) ' поиск даты
            j1 = clf.Row
    
Cells(j1, 2).Select
Selection.Copy
Workbooks("AutoReport_Din").Worksheets("Выгрузка_POSReport").Activate
Cells(j, 13).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
errH1:
errH2:
    Next
Поиск через VBA
 
Karataev, спасибо. Удивительно, но работает) Как вы только до этого догадались?
Поиск через VBA
 
Спасибо, Казанский.
Использовал Ваш метод, добавил еще один столбец с датами в общем формате. Все работает.
Поиск через VBA
 
Вот и мне не понятно) причем даты не находятся после 9 декабря.
Изменено: mzaytsev - 16.12.2016 16:05:04
Поиск через VBA
 
Код
Sub BackLog()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
'Application.EnableEvents = False
'Application.Calculation = xlAutomatic

strDirPath = "G:\Customer Service Department\UIP Supervisors\Контроль за реестром\на согласование\" 'Папка поиска
strName = "Отчет Из РИО. "
strDate = Workbooks("AutoReport_Din.xlsm").Worksheets("Переменные").Range("B6").Value
strYear = Workbooks("AutoReport_Din.xlsm").Worksheets("Переменные").Range("B7").Value
strMaskSearch = ".xlsx"
strFileName2 = strName & strDate & " " & strYear
strFileName = strDirPath & strFileName2 & strMaskSearch

Dim MyDate, MyDate1 As Date
  MyDate = Workbooks("AutoReport_Din.xlsm").Worksheets("BackLog").Range("A11").Value
  MyDate1 = Workbooks("AutoReport_Din.xlsm").Worksheets("BackLog").Range("A2").Value
  Dim i As Long, PvtItem As PivotItem
   With Sheets("Сводная").PivotTables("СводнаяТаблица1")
       ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата создания").CurrentPage = _
        "(All)"
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Дата создания"). _
        EnableMultiplePageItems = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotCache.Refresh
With .PivotFields("Дата создания")
            .NumberFormat = "dd/mm/yyyy"
      ' Установка ручной сортировке поля
      .AutoSort xlManual, .AutoSortField
      ' Показ минимум одного элемента
    For MyDate1 = MyDate1 To MyDate
      For Each PvtItem In .PivotItems
        If IsDate(.Value) Then
          If PvtItem.Value <> MyDate1 Then PvtItem.Visible = False: Exit For
        End If
      Next
        For Each PvtItem In .PivotItems
        With PvtItem
          If IsDate(.Value) Then
            PvtItem.Visible = PvtItem.Value = MyDate1
          End If
        End With
      Next
      ' Сортировка по возрастанию
      .AutoSort xlAscending, .AutoSortField
      
 'Аналитический результат
   With Sheets("Сводная").PivotTables("СводнаяТаблица1")
       ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Аналитический результат").CurrentPage = _
        "(All)"
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Аналитический результат"). _
        EnableMultiplePageItems = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotCache.Refresh
With .PivotFields("Аналитический результат")
      ' Установка ручной сортировке поля
      .AutoSort xlManual, .AutoSortField
      ' Показ минимум одного элемента
      For Each PvtItem In .PivotItems
        If .Value = "Дубликат" Then .Visible = False: Exit For
             Next
        For Each PvtItem In .PivotItems
        With PvtItem
           .Visible = .Value <> "Дубликат"
         End With
      Next
      ' Сортировка по возрастанию
      .AutoSort xlAscending, .AutoSortField
    End With
    End With
    
    ' шаг обработка заявки
    With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("обработка заявки")
        .PivotItems("1").Visible = False
    End With
    
   ' Тип заявки ДК
With Sheets("Сводная").PivotTables("СводнаяТаблица1")
       ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Тип заявки").CurrentPage = _
        "(All)"
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Тип заявки"). _
        EnableMultiplePageItems = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotCache.Refresh
With .PivotFields("Тип заявки")
  ' Установка ручной сортировке поля
      .AutoSort xlManual, .AutoSortField
      ' Показ минимум одного элемента
      For Each PvtItem In .PivotItems
        If PvtItem.Value <> "Сквозная проверка" Then PvtItem.Visible = False
      Next
      ' Сортировка по возрастанию
      .AutoSort xlAscending, .AutoSortField
    End With
 End With
    Range("A16").Select
    Selection.Copy
    Workbooks("AutoReport_Din").Worksheets("BackLog").Activate
    'поиск ячейки с датой
Set c = Cells.Find(What:=MyDate1, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        If Not c Is Nothing Then
        Range(c.Rows, c.Columns).Activate
        End If
        
        Columns("A:A").Select
    Selection.Find(What:=MyDate1, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 1).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
Workbooks(strFileName2).Worksheets("Сводная").Activate

ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Тип заявки"). _
        ClearAllFilters
        
' Тип заявки локалс
With Sheets("Сводная").PivotTables("СводнаяТаблица1")
       ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Тип заявки").CurrentPage = _
        "(All)"
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Тип заявки"). _
        EnableMultiplePageItems = True
    ActiveSheet.PivotTables("СводнаяТаблица1").PivotCache.Refresh
With .PivotFields("Тип заявки")
      ' Установка ручной сортировке поля
      .AutoSort xlManual, .AutoSortField
      ' Показ минимум одного элемента
      For Each PvtItem In .PivotItems
        If PvtItem.Value <> "Locals" And PvtItem.Value <> "Интернет Магазин" Then PvtItem.Visible = False
      Next
      ' Сортировка по возрастанию
      .AutoSort xlAscending, .AutoSortField
    End With
 End With
 
Range("A16").Select
    Selection.Copy
    Workbooks("AutoReport_Din").Worksheets("BackLog").Activate

    'поиск ячейки с датой
       
    Set c = Cells.Find(What:=MyDate1, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        Range(c.Rows, c.Columns).Activate
  ActiveCell.Offset(0, 2).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Workbooks(strFileName2).Worksheets("Сводная").Activate
      ActiveSheet.PivotTables("СводнаяТаблица1"). _
        ClearAllFilters
      Next MyDate1
    End With
    End With
End Sub
Изменено: mzaytsev - 16.12.2016 15:52:56
Поиск через VBA
 
1) Тип данных одинаковый
2) Времени нет, все даты прописаны формулой.
Приложил Книга2.xlsx (10.42 КБ) чтобы было более наглядно.
Поиск через VBA
 
Спасибо за ответ, но дата есть на листе, может необходимо указать в каком конкретно диапазоне искать?  
Поиск через VBA
 
Добрый день, Уважаемые знатоки!
Есть следующая вырезка из кода:
Код
Set c = Cells.Find(What:=MyDate1, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
        Range(c.Rows, c.Columns).Activate

Где MyDate1 поочередно меняется
И почему то возникает ошибка "Object variable or block variable not set" когда цикл доходит до 10.12.2016.
Подскажите пожалуйста в чем может быть причина.
Спасибо.
Изменено: mzaytsev - 16.12.2016 15:20:32
Копирование значения ячейки на пересечении строки и столбца
 
Kuzmich, Вариант предложенный ниже мне подошел больше. Еще раз спасибо за помощь, возможно кому то для собственных задач подойдет именно Ваш вариант.
Копирование значения ячейки на пересечении строки и столбца
 
JayBhagavan, все работает именно так как хотел, огромное спасибо за помощь! Буду внедрять в основной файл.
Копирование значения ячейки на пересечении строки и столбца
 
Спасибо большое за предложенный вариант, проверил, все работает, но хотелось бы чтобы макрос сам переносил данные из выгрузки со всех строк с датами в архив. Теперь у меня по крайней мере есть наработка :) попытаюсь еще сам разобраться как можно подредактировать макрос для достижения нужного результата.
Копирование значения ячейки на пересечении строки и столбца
 
1) Вывод сообщения об ошибке
2) Перезаписывать (небольшое уточнение, если в файле выгрузка и архив за определенную дату и определенный параметр есть значение, то значение в ячейки из выгрузки должно перезаписать значение ячейки в архиве)
3) Оставить без изменения
Изменено: mzaytsev - 16.08.2015 08:18:50
Копирование значения ячейки на пересечении строки и столбца
 
Добрый день, уважаемые форумчане!
Подскажите пожалуйста как можно выполнить следующее:
Есть два файла, в обоих файлах первый столбец это даты, первая строка это название показателей, на пересечении строк и столбцов данные.
В первом файле данные обновляются на ежедневной основе, назову его для понимания (выгрузка), во втором файле хранится информация за исторический период (архив).
Необходимо перенести актуальные данные из выгрузки в архив. Сложность заключается в том, что в файле архив присутствуют названия других показателей. Таким образом задача сводится к тому чтобы найти значение за определенную дату и с определенным показателем из файла выгрузка скопировать его и вставить в файл архив в ячейку с такой же датой и названием показателя.
Реализовать необходимо макросом.
Приложил 2 файла, первый - пример файла выгрузка, второй - пример файла архив. Данные проставлены для примера.

Надеюсь понятно для всех объяснил суть проблемы.

Спасибо.
Макрос для фильтрации времени больше суток в сводной таблице
 
Владимир, Ваш код работает. Всем большое за спасибо за помощь!
Макрос для фильтрации времени больше суток в сводной таблице
 
К сожалению сам файл не могу Вам выложить, информация конфиденциальная т.к. работаю в банке. Думал что вырезки из кода будет достаточно. Сложность заключается в том, как изменить код чтобы он оставлял заявки меньше 8 часов, а все что более 8 скрывал при условии, что присутствуют значения более 24 часов, как видно на скрине выше это может быть и 26 часов и 46 и 79 и т.д.
Макрос для фильтрации времени больше суток в сводной таблице
 
Попробовал использовать первый способ, результат прежний, скрываются только значения с 08:00:00 до 24:00:00 все что больше 24:00:00, так же остается выделенным, как применить второй способ не понял. Не могли бы объяснить поподробнее. Спасибо за помощь!

[img]file:///C:/mzaytsev/1.jpg[/img][img]file:///C:/mzaytsev/1.jpeg[/img]
Изменено: mzaytsev - 10.06.2015 12:47:59
Макрос для фильтрации времени больше суток в сводной таблице
 
Всем, привет. Очень нужна помощь в написании макроса. Есть такой код:
Код
[COLOR=#696a6a]With ActiveSheet.PivotTables("СводнаяТаблица2" ;) .PivotFields( _ [/COLOR]
[COLOR=#696a6a]"Тайминг обработки для партнера" ;) [/COLOR]
[COLOR=#696a6a].NumberFormat = "[hh]:mm:ss" [/COLOR]
[COLOR=#696a6a].AutoSort xlManual, .AutoSortField [/COLOR]
[COLOR=#696a6a]For Each PvtItem In .PivotItems [/COLOR]
[COLOR=#696a6a]If IsDate(.Value) Then [/COLOR]
[COLOR=#696a6a]If .Value > "08:00:00" Then .Visible = False: Exit For [/COLOR]
[COLOR=#696a6a]End If [/COLOR]
[COLOR=#696a6a]Next [/COLOR]

[COLOR=#696a6a]For Each PvtItem In .PivotItems [/COLOR]
[COLOR=#696a6a]With PvtItem [/COLOR]
[COLOR=#696a6a]If IsDate(.Value) Then [/COLOR]
[COLOR=#696a6a].Visible = .Value <= "08:00:00" [/COLOR]
[COLOR=#696a6a]End If [/COLOR]
[COLOR=#696a6a]End With [/COLOR]
[COLOR=#696a6a]Next [/COLOR]
[COLOR=#696a6a].AutoSort xlAscending, .AutoSortField [/COLOR]
[COLOR=#696a6a]End With 
[/COLOR]

Но столкнулся с такой сложностью, что в фильтре по "Тайминг обработки для партнера" присутствуют значения больше 24:00:00, соответственно данным кодом они не скрываются. Подскажите пожалуйста как можно решить эту проблему.
Изменено: mzaytsev - 10.06.2015 23:49:24
Макрос для фильтрации сводной тиблицы
 
Придумал решение сам, использовать функцию левсим, тем самым, можно добиться уникальных значений.
Макрос для фильтрации сводной тиблицы
 
Всем, привет.

Подскажите пожалуйста как будет выглядеть макрос для фильтрации в сводной таблице.
Ситуация следующая, есть сводная таблица, в ней фильтр "причина превышенного тайминга обработки заявки" уникальных значений в этом фильтре нет (все причины начинаются со слов перезвон_в, дозвонился_в, Нет_номера_телефона,  долгий_разговор_с_клиентом и т.д.) необходимо поставить фильтр по всем причинам кроме по всем перезвонам, по всем дозвонился. Как это можно сделать, думал ввести что то типа переменной perezvon = "перезвон*" и оставлять все значения кроме этой переменной.

Всем спасибо кто откликнется на помощь.
Страницы: 1 2 След.
Наверх