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

Вход

Регистрация

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

 

= Мир MS Excel/Подсчет совпадений на html странице - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет совпадений на html странице (Макросы/Sub)
Подсчет совпадений на html странице
roskoshenko Дата: Среда, 19.08.2015, 14:13 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, помогите, пожалуйста

Не получается подсчитать число слов "Исполнение" на web странице.
Код элемента, в котором "Исполнение" прописано приведен ниже.
Еще ниже - vba код неудачной попытки подсчета

[vba]
Код
<dd class="execution current ">Исполнение</dd>"
[/vba]

[vba]
Код
Set ofCollection = IE.document.getElementsByTagName("dd")
     count = 0
     i = 0
     While i < ofCollection.Length
         If ofCollection(i).class = "execution" Then
            count = count + 1
         End If
         i = i + 1
     Wend
          
     numb = count - 8
     ThisWorkbook.Sheets("Лист1").Cells(4, 3) = numb
[/vba]
К сообщению приложен файл: 1-.xlsm (27.5 Kb)
 
Ответить
СообщениеДобрый день, помогите, пожалуйста

Не получается подсчитать число слов "Исполнение" на web странице.
Код элемента, в котором "Исполнение" прописано приведен ниже.
Еще ниже - vba код неудачной попытки подсчета

[vba]
Код
<dd class="execution current ">Исполнение</dd>"
[/vba]

[vba]
Код
Set ofCollection = IE.document.getElementsByTagName("dd")
     count = 0
     i = 0
     While i < ofCollection.Length
         If ofCollection(i).class = "execution" Then
            count = count + 1
         End If
         i = i + 1
     Wend
          
     numb = count - 8
     ThisWorkbook.Sheets("Лист1").Cells(4, 3) = numb
[/vba]

Автор - roskoshenko
Дата добавления - 19.08.2015 в 14:13
AndreTM Дата: Среда, 19.08.2015, 14:30 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Вы подсчитываете слова "Исполнение" или всё же количество классов, начинающихся с "execution"?
Если второе, то попробуйте условие проверки имени прописать как:
[vba]
Код
If Left(ofCollection(i).class, 9) = "execution" Then
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеВы подсчитываете слова "Исполнение" или всё же количество классов, начинающихся с "execution"?
Если второе, то попробуйте условие проверки имени прописать как:
[vba]
Код
If Left(ofCollection(i).class, 9) = "execution" Then
[/vba]

Автор - AndreTM
Дата добавления - 19.08.2015 в 14:30
roskoshenko Дата: Среда, 19.08.2015, 14:35 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AndreTM, попробовал, по-прежнему ругается: "object doesn't support this property or method"
 
Ответить
СообщениеAndreTM, попробовал, по-прежнему ругается: "object doesn't support this property or method"

Автор - roskoshenko
Дата добавления - 19.08.2015 в 14:35
roskoshenko Дата: Среда, 19.08.2015, 15:11 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
виноват, запамятовал сказать об этом
на вот эту строку:
[vba]
Код
If Left(ofCollection(i).class, 9) = "execution" Then
[/vba]
равно, как ранее на эту:
[vba]
Код
If ofCollection(i).class = "execution" Then
[/vba]
 
Ответить
Сообщениевиноват, запамятовал сказать об этом
на вот эту строку:
[vba]
Код
If Left(ofCollection(i).class, 9) = "execution" Then
[/vba]
равно, как ранее на эту:
[vba]
Код
If ofCollection(i).class = "execution" Then
[/vba]

Автор - roskoshenko
Дата добавления - 19.08.2015 в 15:11
roskoshenko Дата: Среда, 19.08.2015, 16:42 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
AndreTM, спасибо за внимание!
сделал на основе regexp, которые мне открыл Doober, за что ему спасибо!
К сообщению приложен файл: 1898615.xlsm (28.5 Kb)


Сообщение отредактировал roskoshenko - Среда, 19.08.2015, 16:43
 
Ответить
СообщениеAndreTM, спасибо за внимание!
сделал на основе regexp, которые мне открыл Doober, за что ему спасибо!

Автор - roskoshenko
Дата добавления - 19.08.2015 в 16:42
roskoshenko Дата: Среда, 19.08.2015, 18:22 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
вроде бы соответствует решению, поэтому спрошу тут.
Не подскажите, как правильно закодировать в .regexp фразу для поиска: currentPage">2<
без кавычек, т.к. именно так она указана в html
Заранее спасибо!
 
Ответить
Сообщениевроде бы соответствует решению, поэтому спрошу тут.
Не подскажите, как правильно закодировать в .regexp фразу для поиска: currentPage">2<
без кавычек, т.к. именно так она указана в html
Заранее спасибо!

Автор - roskoshenko
Дата добавления - 19.08.2015 в 18:22
doober Дата: Среда, 19.08.2015, 19:52 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Скажем.Два в одной.
Текущая страница и максимальное их количество.[vba]
Код
Function currentPage(ByVal ss)
Dim Rez(1) As Integer
ss = Replace(ss, Chr(34), "")
     Set objRegExp = CreateObject("VBScript.RegExp")
     objRegExp.Global = True
     objRegExp.IgnoreCase = True
     objRegExp.Pattern = "currentPage>(\d+)<"
     bRes = objRegExp.test(S)
     If bRes Then
         Set objMatches = objRegExp.Execute(S)
     Rez(0) = objMatches(0).subMatches(0)
     End If
         objRegExp.Pattern = "javascript:goToPage\((\d+)\)"
     bRes = objRegExp.test(S)
     If bRes Then
     Set objMatches = objRegExp.Execute(S)
       Rez(1) = 0
     For n = 0 To objMatches.count - 1
      Rez(1) = IIf(Rez(1) > objMatches(n).subMatches(0), Rez(1), objMatches(n).subMatches(0))
     Next
     End If
currentPage = Rez
End Function
[/vba]


 
Ответить
СообщениеСкажем.Два в одной.
Текущая страница и максимальное их количество.[vba]
Код
Function currentPage(ByVal ss)
Dim Rez(1) As Integer
ss = Replace(ss, Chr(34), "")
     Set objRegExp = CreateObject("VBScript.RegExp")
     objRegExp.Global = True
     objRegExp.IgnoreCase = True
     objRegExp.Pattern = "currentPage>(\d+)<"
     bRes = objRegExp.test(S)
     If bRes Then
         Set objMatches = objRegExp.Execute(S)
     Rez(0) = objMatches(0).subMatches(0)
     End If
         objRegExp.Pattern = "javascript:goToPage\((\d+)\)"
     bRes = objRegExp.test(S)
     If bRes Then
     Set objMatches = objRegExp.Execute(S)
       Rez(1) = 0
     For n = 0 To objMatches.count - 1
      Rez(1) = IIf(Rez(1) > objMatches(n).subMatches(0), Rez(1), objMatches(n).subMatches(0))
     Next
     End If
currentPage = Rez
End Function
[/vba]

Автор - doober
Дата добавления - 19.08.2015 в 19:52
roskoshenko Дата: Пятница, 21.08.2015, 11:24 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
doober, прошу прощения за отсутствие
выдает ноль, вместо 1(
 
Ответить
Сообщениеdoober, прошу прощения за отсутствие
выдает ноль, вместо 1(

Автор - roskoshenko
Дата добавления - 21.08.2015 в 11:24
roskoshenko Дата: Пятница, 21.08.2015, 12:40 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
оказывается, он хотел двойную кавычку)
[vba]
Код
"currentPage"">(\d+)<"
[/vba]
 
Ответить
Сообщениеоказывается, он хотел двойную кавычку)
[vba]
Код
"currentPage"">(\d+)<"
[/vba]

Автор - roskoshenko
Дата добавления - 21.08.2015 в 12:40
doober Дата: Пятница, 21.08.2015, 13:29 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Я ошибся.[vba]
Код

Вместо ss = Replace(ss, Chr(34), "")
надо s = Replace(ss, Chr(34), "")
[/vba]




Сообщение отредактировал doober - Пятница, 21.08.2015, 13:30
 
Ответить
СообщениеЯ ошибся.[vba]
Код

Вместо ss = Replace(ss, Chr(34), "")
надо s = Replace(ss, Chr(34), "")
[/vba]

Автор - doober
Дата добавления - 21.08.2015 в 13:29
roskoshenko Дата: Пятница, 21.08.2015, 14:00 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
doober,
в итоге так заиграло
[vba]
Код
Function paging_curr(ByVal S As String) As Integer

     bRes = False
     Set objRegExp = CreateObject("VBScript.RegExp")
     objRegExp.Global = True
     objRegExp.IgnoreCase = True
     objRegExp.Pattern = "currentPage"">(\d+)<"
     bRes = objRegExp.test(S)
     If bRes Then
         Set objMatches = objRegExp.Execute(S)
     paging_curr = Val(objMatches(0).subMatches(0))
     End If

End Function
[/vba]
 
Ответить
Сообщениеdoober,
в итоге так заиграло
[vba]
Код
Function paging_curr(ByVal S As String) As Integer

     bRes = False
     Set objRegExp = CreateObject("VBScript.RegExp")
     objRegExp.Global = True
     objRegExp.IgnoreCase = True
     objRegExp.Pattern = "currentPage"">(\d+)<"
     bRes = objRegExp.test(S)
     If bRes Then
         Set objMatches = objRegExp.Execute(S)
     paging_curr = Val(objMatches(0).subMatches(0))
     End If

End Function
[/vba]

Автор - roskoshenko
Дата добавления - 21.08.2015 в 14:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подсчет совпадений на html странице (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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