Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 5

Нужно убрать галку с чекбокса, который отвечает за транслитерацию текста

13.05.2011, 15:22. Показов 5142. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, возникла проблема следующего харрактера. Пишу базу данных в Access, задача: при выполнении заказа необходимо отправить заказчику смс с текстом "не важно какой текст". Код для кнопки наковырял в интенете, немного его доработал под себя, чтобы автоматически вставлялось значение префикса для оператора, номер телефона и сам текст смс. Проблема: нужно убрать галку с чекбокса, который отвечает за транслитерацию текста. Как я понимаю данная фича реализована через Java (может и ошибаюсь - не важно). Подскажите, возможно это реализовать или нет? За пример взял сайт билайна, поиск полей ведется по имени тэга. При выполнении VB не ругается.

Кусок кода - вот)))
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Private Sub IE_Automation()
    Dim i As Long
    Dim ii As Long
    Dim iii As Boolean
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object
    Dim objCollectionI As Object
    Dim objCollectionII As Object
 
   Set IE = CreateObject("InternetExplorer.Application")
    
    IE.Visible = False
 
    IE.Navigate "http://www.beeline.ru/sms/index.wbp?region=ufa"
 
    Application.StatusBar = "Ожидайте"
 
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
 
    
    Application.StatusBar = "Search form submission. Please wait..."
 
    Set objCollection = IE.Document.getElementsByTagName("input")
    Set objCollectionI = IE.Document.getElementsByTagName("textarea")
    Set objCollectionII = IE.Document.getElementsByTagName("input")
     
    i = 0
    ii = 0
    iii = True
    While i < objCollection.Length
        If objCollection(i).Name = "smstoprefix" Then
 
            objCollection(i).Value = "905"
 
        Else
           
            If objCollection(i).Name = "smsto" Then
            
            objCollection(i).Value = "3513562"
            
            Else
            
                If objCollectionI(ii).Name = "dirtysmstext" Then
                
                objCollectionI(ii).Value = "не важно какой текст"
                
                Else
                    
                    If objCollectionII(iii).Name = "translit" And objCollectionII(iii).Type = "checkbox" Then
                    
                    objElement = objCollectionII(iii) And objElement.Click
                    
                    End If
                End If
            End If
        End If
        i = i + 1
        
    Wend
    
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
 
 
    
    IE.Visible = True
 
    Set IE = Nothing
    Set objElement = Nothing
    Set objCollection = Nothing
 
    Application.StatusBar = ""
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2011, 15:22
Ответы с готовыми решениями:

OpenGL. Нужно вытащить участок кода, который отвечает за управление авто
Кто-нибудь может вытащить тот участок кода, который отвечает за управление авто. Заранее спасибо!

Реализовать транслитерацию текста
Здравствуйте! Есть 2 поля для ввода и 1 кнопка. В поле для ввода пишу текст типа: &quot;abcdcdaaabcd&quot;. Нужно сделать так, что бы при...

Программа производит транслитерацию текста, введенного на кириллице
Программа производит транслитерацию текста, введенного на кириллице. Пример: “Здравствуй, друг! Очень рад встрече” – “Zdravstvuy, drug!...

12
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,328
13.05.2011, 17:10
Цитата Сообщение от EfimRotin Посмотреть сообщение
нужно убрать галку с чекбокса, который отвечает за транслитерацию текста
ну уберёте Вы её, а капчу кто вводить будет, "Отправить" кто будет жать??
Согласен каждый шаг это шаг вперёд
По существу нужно выснять сколько в IE фреймов и других элементов управления, чтобы снять галочку, чтобы к ней обратится
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
13.05.2011, 17:58
Кусок приведенного кода - пример работы с DOM (объектная модель html-документа) из кода VBA. Сделать это можно, изменением одного из свойств элемента INPUT. Точно сейчас сказать не могу, возможно там есть свойство Value у объекта objElement в районе строк 54-56 приведенного куска кода. Если со свойством не разобраться, можно сделать ещё один клик (или убрать лишний в строке 55).

Выложите ещё сам html-код документа, открываемого в IE или адрес, который подгружаете в IE?
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 5
14.05.2011, 07:36  [ТС]
Цитата Сообщение от mc-black Посмотреть сообщение
Кусок приведенного кода - пример работы с DOM (объектная модель html-документа) из кода VBA. Сделать это можно, изменением одного из свойств элемента INPUT. Точно сейчас сказать не могу, возможно там есть свойство Value у объекта objElement в районе строк 54-56 приведенного куска кода. Если со свойством не разобраться, можно сделать ещё один клик (или убрать лишний в строке 55).

Выложите ещё сам html-код документа, открываемого в IE или адрес, который подгружаете в IE?
адрес прописан в строке 16 приведенного кода

Добавлено через 3 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ну уберёте Вы её, а капчу кто вводить будет, "Отправить" кто будет жать??
Согласен каждый шаг это шаг вперёд
По существу нужно выснять сколько в IE фреймов и других элементов управления, чтобы снять галочку, чтобы к ней обратится
капчу вводить будет оператор, для которого я и пишу эту программу, и кнопку жать тоже он будет, хотя это можно и автоматизировать. Спросите для чего вообще все заморочки? Отвечаю: так надо, мне за это деньги платят.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,328
14.05.2011, 16:40
>хотя это можно и автоматизировать
обалдеть
вот это:
>капчу вводить будет оператор, для которого я и пишу эту программу, и кнопку жать тоже он будет
Верится с трудом, научите плз, а уж чекбокс ерунда
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 5
16.05.2011, 06:54  [ТС]
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
>хотя это можно и автоматизировать
обалдеть
вот это:
>капчу вводить будет оператор, для которого я и пишу эту программу, и кнопку жать тоже он будет
Верится с трудом, научите плз, а уж чекбокс ерунда
Уважаемый, оставь свои невыразительные нападки для тех, кому они интересны. Я обратился с совершенно конкретным вопросом.
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
16.05.2011, 10:34
Убрал из Вашего кода всё лишнее, кроме того, что необходимо, чтобы показать, как снимается галочка. Проверял на файле-копии странички по указанному адресу.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub IE_Automation()
    Dim i As Long
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object
 
    Set IE = CreateObject("InternetExplorer.Application")
 
    IE.Navigate "http://www.beeline.ru/sms/index.wbp?region=ufa" 'ThisWorkbook.Path & "\sms.htm"
 
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
 
    Set objCollection = IE.Document.getElementsByTagName("input")
 
    i = 0
    While i < objCollection.Length
        If objCollection(i).Name = "translit" And objCollection(i).Type = "checkbox" Then
            objCollection(i).Checked = False 'Это свойство отвечает за галочку чекбокса
        End If
        i = i + 1
    Wend
 
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
    
    IE.Visible = True
 
    Set IE = Nothing
    Set objElement = Nothing
    Set objCollection = Nothing
End Sub
2
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 5
16.05.2011, 15:07  [ТС]
Вопрос закрыт
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,328
16.05.2011, 21:24
>оставь свои невыразительные нападки для тех, кому они интересны
Это не есть нападки, это вопрос
>Я обратился с совершенно конкретным вопросом
Я на него ответил: По существу нужно выснять сколько в IE фреймов и других элементов управления, чтобы снять галочку, чтобы к ней обратится .
вот и подтверждение
Цитата Сообщение от mc-black Посмотреть сообщение
While i < objCollection.Length
If objCollection(i).Name = "translit" And objCollection(i).Type = "checkbox" Then
objCollection(i).Checked = False 'Это свойство отвечает за галочку чекбокса
End If
i = i + 1
Wend
Вы ответите на мой вопрос:
>капчу вводить будет оператор, для которого я и пишу эту программу, и кнопку жать тоже он >будет, хотя это можно и автоматизировать
Научите как ???

Добавлено через 1 час 14 минут
mc-black, с Браузером с Экселя я никогда не работал, подскажите что означает блок
Visual Basic
1
2
3
Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
Закомментируйте его пжл
2
подскажите как ввести в поля Код, Номер, Сообщение и выбрать нужный регион из имеющихся в Комбобксе
Понятно, что у EfimRotin есть эти решения, просто Ваши могут отличаться
Спасибо

Добавлено через 49 минут
разобрался:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Private Sub IE_Automation()
 
    Dim i As Long
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object
    Dim objCollection_i_Name As String
    Dim objCollection_i_Type As String
 
    Set IE = CreateObject("InternetExplorer.Application")
 
    IE.Navigate "http://www.beeline.ru/sms/index.wbp?region=ufa"
    'http://www.beeline.ru/sms/index.wbp?region=chelyabinsk
    
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
 
 IE.Visible = True
 
    Set objCollection = IE.Document.getElementsByTagName("input")
    Set objCollectionI = IE.Document.getElementsByTagName("textarea")
 
    Dim Ваше_сообщение_введено As Boolean
    
    While i < objCollection.Length
    objCollection_i_Name = objCollection(i).Name
    objCollection_i_Type = objCollection(i).Type
    If objCollection(i).Name = "translit" Or objCollection(i).Name = "smstoprefix" Or objCollection(i).Name = "smsto" Or objCollectionI(0).Name = "dirtysmstext" And Ваше_сообщение_введено = False Then
        
        If objCollection(i).Name = "translit" And objCollection(i).Type = "checkbox" Then
        'это свойство отвечает за галочку чекбокса "Преобразовать кириллические символы в латинские"
        objCollection(i).Checked = False
        
        ElseIf objCollection(i).Name = "smstoprefix" Then
        'ввод в поле "Код"
        objCollection(i).Value = "905"
        
        ElseIf objCollection(i).Name = "smsto" Then
        'ввод в поле "Номер"
        objCollection(i).Value = "3513562"
        
        ElseIf objCollectionI(0).Name = "dirtysmstext" And Ваше_сообщение_введено = False Then
        'ввод в поле "Ваше сообщение"
        objCollectionI(0).Value = "не важно какой текст"
        Ваше_сообщение_введено = True
        End If
        End If
        i = i + 1
    Wend
 
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
    
    'IE.Visible = True
 
    Set IE = Nothing
    Set objElement = Nothing
    Set objCollection = Nothing
    Set objCollectionI = Nothing
    
End Sub
Но всё же
Закомментируйте
Visual Basic
1
2
3
Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
пжл
И не подскажите это надёжней чем загрузка из Ворда, там Реадстате <> 4 пишем??
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
16.05.2011, 22:41
IE.Busy означает, что браузер в это время занят другими делами - грузит страничку или выполняет скрипты, которые динамически строят html-документ. Когда "занятость" (.Busy) прекратится, мы можем поработать с ним как с объектом подобно тому как можно работать из Word с Excel. Все это зациклено, в промежутке вставлено Application.Wait, то есть ждём и проверяем занятость каждую секунду - DateAdd("s", 1, Now). Вот собственно и всё.
2
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,328
17.05.2011, 05:03
Спасибо
В Ворде Application.Wait не катит, чтобы Вы поставили вместо него ??
И не подскажите это надёжней чем загрузка из Ворда, там Реадстате <> 4 пишем??
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
17.05.2011, 09:02
Если нет Wait, я бы поставил апишный таймер. Пример тут на форуме как-то приводил.

Visual Basic
1
это надёжней чем загрузка из Ворда, там Реадстате <> 4 пишем??
Не понятно, это о чём?
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 1
03.03.2015, 17:08
Добрый день! Подскажите пожалуйста, как нажать кнопку "отправить" в эксплорере из VBA?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2015, 17:08
Помогаю со студенческими работами здесь

Замена текста со спецсимволами (принцип похож на транслитерацию)
Расшифровывал я все это, с помощью обычного блокнота, при помощи автозамены Ctrl+H. Хотелось бы как-то автоматизировать этот процесс)...

Напишите программу, которая (использую оператор выбора – case) производит транслитерацию текста
Напишите программу, которая (использую оператор выбора – case) производит транслитерацию текста с кириллицы на латиницу.

Bootstrap 4: снятие галочки с чекбокса при выборе другого чекбокса
Здравствуйте! Как снять галочку чекбокса при выборе другого чекбокса, рассположенных в цикле? Спасибо. } elseif...

Копирование текста с одной страницы на другую нажатием чекбокса
Помогите пожалуйста разобраться с данной проблемой. У меня есть 2 Листа. На Листе 1 текст с CheckBox. Нужно сделать так, что бы при...

Нужно изменить значение чекбокса в массиве post
Здравствуйте! Вот есть вот такой вот код if($_POST == 'on') $ch_value = &quot;Да&quot; foreach ( $_POST as $key =&gt; $value ) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru