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

Страницы: 1 2 След.
Заполнение веб-формы через VBA, форма принимает заполненную ячейку как незаполненную
 
И это никак не обойти?

Дело в том, что даже когда из макроса исключаю эту строку:
Код
 .getElementsByName("ResourceUrl")(0).Value = "" & urladdress & ""
, и макрос, соответственно, не заполняет поле 'Указатель страницы сайта в сети "Интернет"', а потом я вручную заполняю обязательное поле  'Указатель страницы сайта в сети "Интернет"' и защитный код, все равно не получается отправить сообщение.
Пишет "Не указано 'Указатель страницы сайта в сети "Интернет"'".
Заполнение веб-формы через VBA, форма принимает заполненную ячейку как незаполненную
 
Здравствуйте,

Есть такой макрос, который заполняет поля веб-формы на странице https://eais.rkn.gov.ru/feedback/. Он же находится во вложенном файле Эксель. При нажатии на кнопку "РКН" в ячейке C3, макрос запускается.

Код
Sub RKN()

urladdress = Workbooks("RKN.xlsm").Sheets("Лист1").Range("B2")
texttosend = Workbooks("RKN.xlsm").Sheets("Лист1").Range("B3")
    With CreateObject("internetexplorer.application")
        'Запускаем IE и загружаем страницу
        .Visible = True
        .Navigate "https://eais.rkn.gov.ru/feedback/"
         While .Busy Or (.ReadyState <> 4)
            DoEvents
        Wend

        'Вносим данные
        With .Document
            .getElementsByName("Type")(0).Value = "pharmacy"
            .getElementsByName("ResourceUrl")(0).Value = "" & urladdress & ""
            .getElementsByName("MediaTypeU[]")(3).Click
            .getElementsByName("CommentU")(0).Value = " " & texttosend & " "
            .getElementsByName("ReporterLastName")(0).Value = "Петров"
            .getElementsByName("ReporterFirstName")(0).Value = "Василий"
            .getElementsByName("ReporterMiddleName")(0).Value = "Романович"
            .getElementsByName("ReporterBirthYear")(0).Value = "1955"
            .getElementsByName("ReporterCountry")(0).Value = "РФ"
            .getElementsByName("ReporterEmail")(0).Value = "pet.vas.019283per@example.ru"
            .getElementsByName("SendNotification")(0).Click
        End With
    
    End With
    
End Sub


Когда на странице https://eais.rkn.gov.ru/feedback/ нет капчи (защитного кода) в конце веб-формы, то остается нажать кнопку "Направить сообщение" и заполненная веб-форма уходит.
Но когда на странице есть поле для защитного кода, то после его ввода и нажатия кнопки "Направить сообщение", появляется ошибка "Не указано 'Указатель страницы сайта в сети "Интернет"'" (см. вложенный скрин). То есть, почему-то не воспринимается поле 'Указатель страницы сайта в сети "Интернет"' как заполненное. Повторюсь, это происходит только когда на странице появляется поле "Защитный код"!

Подскажите, пожалуйста, с чем может быть связана эта проблема и как можно исправить.

Всем хорошего дня.
Логика формулы ЕСЛИМН
 
Спасибо за ответы!
Изменено: Max5 - 13.07.2023 05:00:21
Логика формулы ЕСЛИМН
 
Всем привет. Подскажите, пожалуйста, логику формулы ЕСЛИМН.
Во вложенном файле в ячейке B4 следующая формула:
Код
=ЕСЛИМН(A4<27;"Ответ1";A4>85;"Ответ2";A4="-";"Дефис")
В ячейке A4 - дефис ("-"), однако результат формулы выдает "Ответ2", вместо слова "Дефис".
В ячейке A5 - слово "Текст", однако результат формулы выдает "Ответ2". Разве не должна быть какая-либо ошибка качестве результата?
Почему так происходит?
Изменено: Max5 - 25.02.2023 10:10:25
Почему формулы восстанавливаются на первоначальные при обновлении Power Query?
 
p_vah,

Спасибо большое! Теперь все работает, как надо: короткая формула сохраняется после обновления.
Изменено: Max5 - 24.04.2022 16:40:32
Почему формулы восстанавливаются на первоначальные при обновлении Power Query?
 
Всем добрый день!

Знатоки Excel, вы не могли бы помочь с проблемой.
На листе 1 вложенного файла данные в столбцы от A до H тянутся с текстового файла, расположенного на жестком диске, путем запроса Power Query.
Раньше в ячейке I5 использовалась длинная формула
Код
=ЕСЛИОШИБКА(ЕСЛИМН(И(D5>G5;(D5-G5)>=(D5*1)/100;(D5-G5)<(D5*1.1)/100);"Д1";И(D5>G5;(D5-G5)>=(D5*1.1)/100;(D5-G5)<(D5*1.2)/100);"Д2";И(D5>G5;(D5-G5)>=(D5*1.2)/100;(D5-G5)<(D5*1.3)/100);"Д3";И(D5>G5;(D5-G5)>=(D5*1.3)/100;(D5-G5)<(D5*1.4)/100);"Д4";И(D5>G5;(D5-G5)>=(D5*1.4)/100;(D5-G5)<(D5*1.5)/100);"Д5";И(D5>G5;(D5-G5)>=(D5*1.5)/100;(D5-G5)<(D5*2)/100);"Д6";И(D5>G5;(D5-G5)>=(D5*2)/100);"Д7");"-")
.
Затем я изменил ее на короткую,
Код
=ЕСЛИ(G5>D5;"Д1";"-") 

протянул на весь столбец I и закрыл файл. При открытии файла остается короткая формула.
Но после обновления Power Query в столбце I происходит замена формул с короткой на длинную (на ту, которая использовалась ранее).
Такая же замена происходит, если нажать на ячейку в столбце I и выбрать "Восстановить формулу в вычисляемом столбце".

Вы не подскажите, как сделать, чтобы при обновлении Power Query оставалась короткая формула
Код
=ЕСЛИ(G5>D5;"Д1";"-")

Интересно, где могла "засесть" первоначальная длинная формула?
Изменено: Max5 - 05.01.2022 13:37:47
Найти среднее значение 5 минимальных положительных значений в диапазоне
 
Цитата
vikttur написал:
Не разбрасывайтесь словами, не приуменьшайте гениальность, путая его с умением и опытом.
Какой вы строгий, учитель:)
Найти среднее значение 5 минимальных положительных значений в диапазоне
 
Сергей Евдокимов, jakim, БМВ, vikttur,
люди, вы гении!)) Спасибо огромное! По скорости, да, все примерно одинаковые - тестировал на 200 строках.

Сергей Евдокимов, не получилось проверить вашу формулу, так как в Excel 2019 нет функции ФИЛЬТР.))
Найти среднее значение 5 минимальных положительных значений в диапазоне
 
Всем привет.
Есть формула, которая вычисляет среднее первых 5 минимальных значений:
Код
=СРЗНАЧ(НАИМЕНЬШИЙ($A$1:A10;{1;2;3;4;5}))

В вычислении "участвуют" положительные и отрицательные числа.
Подскажите, пожалуйста, как сделать, чтобы формула вычислила среднее первых 5 минимальных положительных значений?
Как сделать макрос с 2 переменными в гиперссылке на Интернет-страницу
 
Ігор Гончаренко,

Спасибо! Все работает.
Как сделать макрос с 2 переменными в гиперссылке на Интернет-страницу
 
Ігор Гончаренко,

Ваш макрос загружает 4 файла: "EURUSD=X" - "1d", "EURUSD=X" - "1wk", "GBP=X" - "1d", "GBP=X" - "1wk".
А можно как-то сделать, чтобы только 2 файла загружались: "EURUSD=X" - "1d", и "GBP=X" - "1wk". То есть, связка переменных curr и i - по порядку указанного в скобках?
Как сделать макрос с 2 переменными в гиперссылке на Интернет-страницу
 
Точно!!! Оказалось так просто.

Спасибо большое!
Как сделать макрос с 2 переменными в гиперссылке на Интернет-страницу
 
Всем добрый день,

Есть макрос, который последовательно загружает файлы, на основании переменной "curr": "EURUSD=X", "GBP=X". Он загружает только дневные данные. Дневные данные обозначаются в гиперссылке как "1d".
Код
Sub Загрузка()
Dim curr
For Each curr In Array("EURUSD=X", "GBP=X")
Shell ("C:\Program Files\Google\Chrome\Application\chrome.exe -url https://query1.finance.yahoo.com/v7/finance/download/" & curr & "?period1=1609459200&period2=1640908800&interval=1d&events=history&includeAdjustedClose=true")
Next curr
End Sub
Я хотел бы добавить вторую переменную "dt": "1d" и "1wk", - чтобы макрос загружал: дневные данные по валютной паре "EURUSD=X" и недельные данные по валютной паре "GBP=X".
Подскажите, пожалуйста, как нужно объявить вторую переменную в коде?

В гиперссылке переменные располагаются, как указано ниже:

https://query1.finance.yahoo.com/v7/finance/download/" & curr & "?period1=1609459200&period2=1640908800&interval=" & dt & "&events=history&includeAdjustedClose=true

В итоге, макрос должен выгрузить 2 файла по ссылкам:
Код
https://query1.finance.yahoo.com/v7/finance/download/EURUSD=X?period1=1609459200&period2=1640908800&interval=1d&events=history&includeAdjustedClose=true

https://query1.finance.yahoo.com/v7/finance/download/GBP=X?period1=1609459200&period2=1640908800&interval=1wk&events=history&includeAdjustedClose=true
Изменено: Max5 - 24.10.2021 14:55:39
Макрос берет старое, а не обновленное из внешней связи значение
 
Цитата
anyarceva написал:
Мне в итоге после .RefreshAll помогла строчка
Зашел на форум и ваш пост с "Application.CalculateUntilAsyncQueriesDone" стал решением. Спасибо!
Продолжение работы макроса после скачивания файла из Интернета
 
Хорошо.
Продолжение работы макроса после скачивания файла из Интернета
 
МатросНаЗебре,

По вашему коду в сообщении #9: начинается загрузка и тут же появляется окно командной строки. Если на него нажать, то макрос сразу же заканчивается, не дождавшись загрузки. А если дождаться загрузки файла (но тут уже не знаешь, через сколько она закончится:-)) и потом нажать на окно командной строки - то макрос продолжает свое дело.

По коду в сообщении #11: удалил строки 11 и 12 из кода и все заработало, как надо!
Код
FSO.DeleteFile "C:\Users\М\Исходные\Downloads\d125.zip"
Err.Clear

По коду в сообщении #12: удалил эти же строки и все заработало!
Код
FSO.DeleteFile "C:\Users\М\Исходные\Downloads\d125.zip"
Err.Clear

Спасибо за помощь! Посмотрите личные сообщения:-)
Продолжение работы макроса после скачивания файла из Интернета
 
sokol92,

Да, это вариант. Но думал, что, может, есть способ определения окончания загрузки без циклов проверки...
Продолжение работы макроса после скачивания файла из Интернета
 
Так начинает загружать файл, но сразу же переходит к строкам 3 и 4, не дожидаясь окончания загрузки. Соответственно, получается ошибка "Run-time error'53': File not found".

Код
Sub Скачать()
CreateObject("WScript.Shell").Run """" & "C:\Program Files\Google\Chrome\Application\chrome.exe"" -url https://www.vostbank.ru/upload/iblock/ab6/prilozhenie-n-10.pdf.zip", 1, True
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:\Users\Максим\Downloads\prilozhenie-n-10.pdf.zip.pdf", "C:\Users\Максим\Desktop\"

MsgBox "Макрос закончил работу."

End Sub
Продолжение работы макроса после скачивания файла из Интернета
 
Да, ее я тоже удалял и пробовал без нее. Тогда сразу выдает ошибку.
Продолжение работы макроса после скачивания файла из Интернета
 
МатросНаЗебре,

Не получается. Показывает ошибку на 3 строке.
Может, я что-то не так делаю?

Код
Sub Скачать()
Shell ("C:\Program Files\Google\Chrome\Application\chrome.exe -url https://www.vostbank.ru/upload/iblock/ab6/prilozhenie-n-10.pdf.zip")
CreateObject("WScript.Shell").Run """" & "C:\Program Files\Google\Chrome\Application\chrome.exe -url https://www.vostbank.ru/upload/iblock/ab6/prilozhenie-n-10.pdf.zip" & """", 1, True

Set FSO = CreateObject("Scripting.FileSystemObject")

FSO.MoveFile "C:\Users\Максим\Downloads\prilozhenie-n-10.pdf.zip.pdf", "C:\Users\Максим\Desktop\"

MsgBox "Макрос закончил работу."

End Sub
Продолжение работы макроса после скачивания файла из Интернета
 
Всем привет!

Прошу совета для решения следующей задачи. Или дайте какую-либо наводку:-)
Есть макрос ниже. Он загружает файл "d125.zip" из интернета. Время загрузки всегда разное, но за 7 минут (3 строка макроса) укладывается, когда компьютер ничем не занят. После того, как файл загружен, следуют другие действия макроса.
Однако, если ещё что-нибудь делать на компьютере, то загрузка не укладывается в 7 минут. В этом случае, макрос не выполняет последующие действия с файлом (строка 4 и 5).
Подскажите, пожалуйста, что прописать в макросе, чтобы действия с загруженным файлом (строки 4 и 5) макросом всегда выполнялись. Я полагаю, что нужно исключить строку 3 из макроса и вставить какую-либо проверку на завершение скачивания.

Код
Sub Скачать()
Shell ("C:\Program Files\Google\Chrome\Application\chrome.exe -url https://static.qbs.com/d125.zip")
Application.Wait (Now + TimeValue("0:07:00"))
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:\Users\Максим\Downloads\d125.zip", "C:\Users\М\Исходные\"
End Sub
Изменено: Max5 - 10.09.2021 12:39:44
Работа с несколькими книгами, у которых название представляет собой текст+числа+символы, Форматирование макросом нескольких
 
Jack Famous,

Все равно ругается - см. скрин. Но уже не важно - ваш первый макрос работает!
Работа с несколькими книгами, у которых название представляет собой текст+числа+символы, Форматирование макросом нескольких
 
Jack Famous, спасибо, работает!

vikttur, на ваш вариант (такой, как ниже) ругается. Может, я что-то не туда вписал...

Код
Sub Test_vik()


aName = Array ("Файл","Имя","Лист2")
For i = 1 To UBound(aName)

Workbooks.Open Filename:="C:\Users\Максим\Desktop\11111111111\" & i & ".xlsb"

'Тут работает макрос

    
    Next i

End Sub
Работа с несколькими книгами, у которых название представляет собой текст+числа+символы, Форматирование макросом нескольких
 
Всем привет!

Есть макрос, который последовательно форматирует 50 файлов, имена файлов от 1.xlsb до 50.xlsb. Для цифровых имен файлов объявляется переменная Dim AA As Byte и дальше For AA = 1 To 50.
Подскажите, пожалуйста, что нужно подправить в макросе, если имена файлов для форматирования представляют собой текст с числами (например, Файл_1.xlsb, Имя_1.xlsb, Лист2_33ю.xlsb). Где в макросе прописать эти названия?

Спасибо!
Код
Sub Макрос()
Dim AA As Byte

    For AA = 1 To 50
          Workbooks.Open Filename:="C:\Users\Максим\Desktop\11111111111\" & AA & ".xlsb" 
          'Здесь работает макрос
   Next AA
End Sub
Изменено: vikttur - 07.07.2021 16:27:49
Автоматический запуск макроса из личной книги в зависимости от значения в ячейке
 
Юрий М,

Спасибо за наводку. Получился такой код - при появлении слова "Сигнал" в ячейках K5, K6, K7 на листе "Лист1" включается звук 1.wma:
Код
Option Explicit
Private WithEvents App As Application

'Назначаем значение переменной App
Private Sub Workbook_Open()
      Set App = Application
End Sub

Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim objSh As Object
If Sh.Name = "Лист1" Then
   If Not Intersect(Target, Range("K5:K7")) Is Nothing Then
     If Target = "Сигнал" Then
Set objSh = CreateObject("Shell.Application")
objSh.Open ("C:\Users\Максим\Music\1.wma")
     End If
  End If
End If
End Sub
Все работает!

Но, на всякий случай, вы не могли бы посмотреть все ли в нем нормально?
Автоматический запуск макроса из личной книги в зависимости от значения в ячейке
 
Всем добрый день!

Вот здесь есть решение, как запустить макрос при появлении определенного значения в ячейке - https://www.planetaexcel.ru/forum/?FID=8&PAGE_NAME=read&TID=8314.
А есть ли способ, чтобы макрос вставлять не в модуль листа, а в личную книгу и чтобы он так же отрабатывал?

С уважением,
Максим.
Изменено: vikttur - 24.06.2021 14:15:18
Обычная формула вместо формулы массива для сравнения чисел в 2 диапазонах
 
Спасибо и вам!
Изменено: vikttur - 26.06.2021 00:31:57
Обычная формула вместо формулы массива для сравнения чисел в 2 диапазонах
 
Цитата
nbaengineer
Спасибо!
Ваша формула отлично подошла. По сравнению с формулой массива она считает в 5 раз быстрее!
Обычная формула вместо формулы массива для сравнения чисел в 2 диапазонах
 
Всем добрый день,

Подскажите, пожалуйста, обычную формулу вместо формулы массива.
В приложенном файле в столбцах 1, 2, 3 сравниваются числовые значения в 2 диапазонах и на основании результатов выводится итог. Формула массива {=ЕСЛИ(И(A2:A11>B2:B11;C12>=A12);1;2)} долго считает, если данных на листе много.
Какую обычную не очень длинную формулу можно вставить?
Есть вариант, когда попарно сравниваются значения из столбцов 1 и 2 подряд =ЕСЛИ(И(A2>B2;A3>B3... и так далее. Но, мне кажется, есть более короткая формула.
Посчитать количество серий текстовых повторов одной формулой
 
Кнопка цитирования - не для бездумного копирования [МОДЕРАТОР]

Бахтиёр, да, именно так и должна считать формула. В приведенном вами примере - 4 серии.
Спасибо за комментарий!
Изменено: vikttur - 03.06.2021 08:30:58
Страницы: 1 2 След.
Наверх