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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 120 След.
VBA. Решить проблему авторизации на сайте.
 
Макрос может работать с сайтом без использования браузера
(но код надо полностью переписывать)
Но с кодом мы вам тут не поможем, ибо нет доступа к сайту
Пример кода есть здесь:
https://excelvba.ru/code/YandexMarketAuthentication
Получить записи из "Журналы Windows" с помощью VBA
 
Да, можно
Например, через WMI:
https://excelvba.ru/code/NTLogEvent
Шаблон автозаполнения документа
 
Да, возможно
Получение данных вэб-запросом PQ, Двойная авторизация
 
Не видя реального адреса сайта (не имея возможности протестировать), вряд ли возможно помочь в вашем случае.
Парсинг HTML кода страницы, ошибка 401 not authorized
 
Откройте эту саму страницу в браузере Internet Explorer (именно в нём, а не в Edge)
Наверняка там нужно будет авторизоваться, — сделайте это
А потом используйте функцию от nilske (только без строки .SetRequestHeader "Accept-Encoding", "deflate")
Там, в отличие от вашего кода с WinHttpRequest, используется MSXML2.XMLHTTP, который подхватит авторизацию из браузера Internet Explorer
UserForm для умной таблицы, Изменения данных в умной таблице по условиям
 
Цитата
от 1500 р. до 3000 р. в зависимости от качества работы
а кто будет это качество оценивать? и по каким критериям?

Цитата
нужна форма которую можно адаптировать под нужную умную таблицу
прямо универсальное решение, которое будет корректно работать с произвольным количеством столбцов в произвольном файле Excel?
тогда цену надо было не на 3 умножать, а на 10 хотя бы
Не открывается определенная гиперссылка., Не открывается гиперссылка на сайт Леруа Мерлен
 
На этом сайте срабатывает защита от DDoS (QRATOR), когда сначала должен отработать скрипт в браузере, и только после проверки браузера будет открыта страница
Excel прогружает ссылку перед открытием (это лишнее, но так придумал Майкрософт)
Прогрузка идет в компоненте типа браузера IE, в котором этот скрипт не срабатывает (можете открыть эту ссылку в IE, и убедиться)
А если эксель видит, что страница не прогрузилась (код ответа сервера не 200 OK, а ошибка), то он выводит сообщение типа того что вы видите.
Короче, проблема нерешаемая (без макросов)
Макрос может перехватывать щелчок по ссылке, и отправлять ссылку напрямую в браузер по-умолчанию
Макрос надо вставить в модуль листа:
Код
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
   CreateObject("wscript.shell").Run Target.Address
   MsgBox "Ссылка открылась"
End Sub
Чтение содержимого email
 
декодировать надо строку из JSON
пример кода: https://excelvba.ru/code/JSON_decode
Чтение содержимого email
 
Цитата
как сделать так, что бы срабатывал макрос при запросе от бота пока не придумал
не так делается
макрос должен раз в секунду подключаться к боту (получать новые сообщения), и анализировать их (там есть данные, кто что ввёл в бота)
а бот сам никак не может дать команду на ваш комп
Вакансия, Вакансия
 
Цитата
МатросНаЗебре написал:
Ну не стоит так придираться к формулировкам.Хотят видеть что-то вроде:
А я бы, наоборот, попридирался к формулировкам, когда речь идет о ПОЛУТОРА ДНЯХ работы без какой-либо оплаты и каких-либо гарантий, и при том что потом КТО-ТО (человек с неизвестной квалификацией, возможно даже HR) будет оценивать работу возможно по ФОРМАЛЬНЫМ требованиям, и причём в условиях конкурса (сравнивая с неизвестным количеством работ других претендентов)
Т.е. потрудились вы сутки, выслали работу HR-у, а он поиском по коду нашел там слово Range (ибо обращение к диапазону в коде точно будет), и просто откинул вашу заявку, потому что код не соответствует заданным требованиям.

Повторюсь, всё это очень похоже на популярную нынче разводку «сделай мне проект бесплатно, в надежде получить эту работу» (в других сферах это встречается ОЧЕНЬ часто, по VBA - нет, но и вакансий по VBA в сотни раз меньше, чем по остальным IT направлениям), и ОСОБЕННО СМУЩАЕТ пункт «если не предлагают, то спросить самостоятельно» касательно этого тестового задания. Т.е. HR может быть даже не в курсе, что вакансия размещена не для поиска человека, а для получения готового решения текущей задачи.
Короче, коллеги, будьте внимательными.

А может быть всё еще интереснее
Изменено: Игорь - 16.04.2022 01:51:27
Разный размер файла xlam при сохранении, Сохранял с интервалом в несколько секунд, прошу объяснить результат
 
Если речь про небольшие изменения размера (871 кБ, 872 кБ), то тут сказать не могу
Что касается большой разницы между размерами (1173 кБ и  872 кБ), это зависит от того, сохранил ли Excel в файле скомпилированный код.
Excel компилирует код VBA при каждом запуске файла Excel (надстройки), потому хранение скомпилированного кода в файле не обязательно.
Можно убрать этот компилированный код, уменьшив размер файла (через сторонние надстройки типа Code Cleaner или вручную с результатом похуже, добавив пробел куда-нибудь в код и сохранив файл)
Если размер файла для вас не критичен — не заморачивайтесь с этим.
Открыть текстовое содержимое ячейки в браузере не по умолчанию, в режиме инкогнито.
 
БМВ, да там всё работает в макросе
Просто параметр --incognito включает режим инкогнито только для браузера Chrome
И задача - найти аналогичный параметр для браузера YandexBrowser
И вся проблема в том, что ТС не может загуглить этот параметр (или просто лень)
Вакансия, Вакансия
 
Полтора дня на тестовое задание? А что не неделя?
Больше похоже на желание бесплатно получить готовую работу, под видом тестового задания.
Непрограммное нанесение линий (простейших фигур) на форму, VBA
 
Здравствуйте.
Советую использовать всё-таки Label в качестве линии
Если вы и найдете этот компонент Line (доустановите там что-то), то на другом компе это работать не будет (пока там тоже не доустановите компонент, ибо его нет в стандартных в VBA). А оно вам надо, чтобы на других компах линии не отображались?
Кнопка отмена в progressbar, Не работает кнопка отмены и крестик в форме отображения статуса выполнения макроса
 
А где в коде кнопки есть какая-либо выполняемая команда?
(при нажатии кнопки exit_macro у вас просто ничего не происходит)
Парсинг не табличного сайта, Помогите :)
 
Ну и мне на почту можете выслать исходные данные (адрес сайта, логин-пароль) и пример результата в файле Excel
Контакты в профиле
VBA. Run-time error -1072896658 Указанная кодировка не поддерживается, Парсинг сайта
 
Для этого сайта нужно считывать не ResponseText из ответа сайта, а .ResponseBody (и обрабатывать его)

Вам поможет дополнительная функция:
Код
Function GetResponse(ByRef BytesArr, ByVal Encoding$) As String
    On Error Resume Next
    Dim ResponseFilename$
    Set ADODBStream = CreateObject("ADODB.Stream")
    With ADODBStream
        ResponseFilename$ = Environ("tmp") & "\response.txt"
        If Len(Encoding$) Then .Charset = Encoding$
        .Type = 1        ' adTypeBinary:
        .Open: .Write BytesArr
        .SaveToFile ResponseFilename$, 2
        .Type = 2        'adTypeText
        .LoadFromFile ResponseFilename$
        GetResponse = .ReadText
        .Close
        Kill ResponseFilename$
    End With
    Set ADODBStream = Nothing
End Function


использование в вашем случае:
Код
...innerHTML = GetResponse(xmlRequest.ResponseBody, "utf-8")
Автоматизация производства договоров и актов к ним
 
Написал в личные сообщения
Внесения текста в PDF с помощью средств VBA
 
Здравствуйте.
способы существуют, но они сложные (средствами Windows этого не сделать, нужен дополнительный софт, установленный на ПК), ну и к Excel эта задача вообще никакого отношения не имеет, — потому и ответов нет
VBA-сообщение на другой компьютер в сети
 
вот так если делать - ошибки точно нет, открывается консоль:
Код
CreateObject("WScript.shell").Run "msg /Server:127.0.0.1 ""это текст"""
Адрес (ячейка) кнопки при ее копировании, Передать адрес нажатой кнопки в макрос
 
Код
Sub Кнопка1_Щелчок()
    Dim sha As Shape
    Set sha = Me.Shapes(Application.Caller)
    [a1] = sha.TopLeftCell.Address(0, 0)
End Sub
Открытие профиля Chrome посредством макроса
 
Здравствуйте.
а вы покажите строку кода, которую вы написали
(может, там с кавычками напутано, оттого и не работает)
Поиск одинаковых по содержанию, но разных по размеру файлов.
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Т.е. человек решает задачу в шаблонном файле
А я бы сделал наоборот — каждому свой уникальный файл (без каких-либо макросов), в котором чуть-чуть изменено одно исходное значение.
Соответственно, результат будет тоже несущественно отличаться (например, результат будет не у всех равен 55, а окажется в диапазоне 55,1 ... 55,6)

На компе преподавателя а файле пишем простенький макрос из 10 строк кода, который
- в цикле перебирает список студентов из 200 записей, и для каждого создаёт копию исходного шаблонного файла,
сохраняя этот файл под именем ФИО_студента.xlsx
- в созданной копии увеличивает одно исходное значение на 0,01*индекс студента
(например, меняем 1142 на 1142.005 для пятого студента)

Все эти 200 файлов оказываются в одной общей папке, студент перед началом работы открывает свой файл, делает в нем работу, сохраняет
(даже никуда файл этот студенту высылать не надо по окончании работы)
Ну а проверочный скрипт проверяет:
1. уникальность исходного значения в заданной ячейке (1142.001, 1142.002, 1142.005 и т.д.)
2. уникальность результата (55.116, 55.123 и т.д.)
3. правильность результата - соответствие результата диапазону 55,1 ... 55,6

В этом случае у студентов не получится скопипастить ни исходные данные, ни решение.
Разработка утилиты в EXCEL для печати заполненных бланков, Разработка утилиты в EXCEL для печати заполненных бланков
 
Написал в личку
Получение параметров Cookies
 
Цитата
Ни в одном Response Headers не устанавливаются искомые Cookies
не верю
надо открывать страницу в режиме Инкогнито, предварительно открыв консоль браузера (до начала загрузки страницы)
и тогда найдете

Цитата
Я не смог переложить предложенный код в VBA excel.
это не готовый код. это алгоритм, для понимания, что примерно нужно делать

Цитата
доступ к странице из IE защищен капчей
ну так введите капчу один раз (у меня вот нет капчи, а у вас она из-за частых попыток запросов)
это же самый простой вариант, при запуске открыть браузер, ввести капчу если она есть, считать куки,  закрыть браузер, и потом выполнять запросы
Получение параметров Cookies
 
При загрузке главной страницы браузер выполняет много запросов (в том числе и запросы, инициированные скриптами)
В ответ на разные запросы, сервером могут возвращаться разные куки (которые заменяют или дополняют предыдущие)
Смотрите, по каким запросам появляются эти куки, и выполняйте макросом аналогичные запросы:


Причем, это еще не всё
Некоторые куки ставятся в момент редиректов.
Сайт перенаправляет вас 2-3 раза, а ваш код считает заголовки ответа сервера только из последнего из 2-3 перенаправлений (и вы можете потерять кукисы, которые сайт выдавал в первых редиректах)
Чтобы это учесть, надо заметно усложнять функцию загрузки страницы:

Код
 ' ...
 
' отключаем авторедирект, чтобы получать cookies при каждом редиректе
wHTTP.Option(WinHttpRequestOption_EnableRedirects) = False

' ...

 wHTTP.Send

 ' считываем и запоминаем куки
 ResponseHeaders$ = DecodeUTF8(wHTTP.GetAllResponseHeaders)
 SaveCookiesFromResponseHeaders ResponseHeaders$
 
 ' если есть заголовок Location - выполняем редирект
 URL$ = GetRedirectLocation(ResponseHeaders$, wHTTP.Option(WinHttpRequestOption_URL))
 
 While IsURL(URL$) ' ЦИКЛ ДЛЯ РЕДИРЕКТОВ
     RedirectsCount& = RedirectsCount& + 1
     If RedirectsCount& > 5 Then
         AddBalloon "Зацикливание редиректа на " & CreateHTMLlink(URL$) & "<br />Загрузка страницы прервана.", bt_Warning
         GoTo StopRedirects
     End If
     If (PrevRedirectURL$ = URL$) And (RedirectsCount& > 1) Then
         ' надо очистить заголовки запроса, т.к. там старые Host и Referer
         Set wHTTP = New WinHttpRequest
         RequestHeadersStore.RemoveAll
         AddStandartHeadersIntoStore URL$
         AddRequestHeadersFromStore
         If Not WP Is Nothing Then WP.Proxy.Apply
     End If
     
     wHTTP.Open "GET", URL$, True
     AddRequestHeadersFromStore
     PrevRedirectURL$ = URL$
     
     PreviousCookies$ = GetCookiesFromStore
     If Not CookiesStore Is Nothing Then wHTTP.SetRequestHeader "Cookie", GetCookiesFromStore
     
     wHTTP.Send
     
     URL$ = ""
     If wHTTP.WaitForResponse(Timeout&) Then
         ' MsgBox .GetAllResponseHeaders, vbCritical
         ResponseHeaders$ = "": ResponseHeaders$ = wHTTP.GetAllResponseHeaders
         SaveCookiesFromResponseHeaders ResponseHeaders$
         
         URL$ = GetRedirectLocation(ResponseHeaders$, wHTTP.Option(WinHttpRequestOption_URL))
     End If
 Wend

' ...


Есть другой вариант — открыть страницу в браузере IE, и потом считать все Cookies из IE
Причем тут 2 варианта считывания — из документа IE (много, но не все, путем обращения к IE.document.Cookie), и напрямую из текстовых файлов Cookies (там точно всё считается)
И с этими кукисами потом выполнять запрос средствами WinHttp

Пример кода для считывания куки из системных файлов:
Код
Function GetIECookiesFromFiles(ByVal domain$, Optional Apply As Boolean) As String
    On Error Resume Next
    Dim sCookiesPath$, oCookies As Object, oFSO As Object, oFolder As Object, oFile
    Dim sContent As String, a() As String, i As Long, aItems, aCookies()
    
    ' read IE cookie files
    sCookiesPath = CreateObject("shell.application").Namespace("shell:Cookies").self.Path
    Set oCookies = CreateObject("Scripting.Dictionary")
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(sCookiesPath)
    For Each oFile In oFolder.Files
        If LCase(oFSO.GetExtensionName(oFile.Name)) = "txt" Then
            With oFile.OpenAsTextStream(1, 0) ' read-only, ascii
                sContent = .ReadAll
                .Close
            End With
            sContent = Replace(sContent, vbCr, "")
            ' split cookies within file
            a = Split(sContent, vbLf & "*" & vbLf)
            For i = 0 To UBound(a) - 1
                If InStr(1, a(i), domain$, vbTextCompare) > 0 Then oCookies.Add oCookies.Count, a(i)
            Next
        End If
    Next
    
    ' parse data, repack to 2d array
    aItems = oCookies.Items()
    If UBound(aItems) = -1 Then Exit Function
    
    ' If CookiesStore Is Nothing Then Set CookiesStore = New Dictionary        ' глобальный словарь с cookies
    ReDim aCookies(1 To UBound(aItems) + 1, 1 To 6)
    Dim param_name$, param_value$, NewCookiesList$
    
    For i = 1 To UBound(aItems) + 1
        a = Split(aItems(i - 1), vbLf)
        
        param_name$ = "": param_value$ = ""
        param_name$ = a(0)
        param_value$ = a(1)
        
        
        If Len(param_name$) Then
            NewCookiesList$ = NewCookiesList$ & IIf(NewCookiesList$ = "", "", vbLf) & param_name$
            GetIECookiesFromFiles = GetIECookiesFromFiles & IIf(GetIECookiesFromFiles = "", "", "; ") & param_name$ & "=" & param_value$
            
            CookiesStore.Item(param_name$) = param_value$
        End If
    Next
    
    If (Len(NewCookiesList$) > 0) Then
        Debug.Print "Добавлено cookies из файлов IE: " & 1 + Len(NewCookiesList$) - Len(Replace(NewCookiesList$, vbLf, ""))
    End If
    
End Function

Sub test_IECookies()
   ' сначала надо открыть сайт https://www.planetaexcel.ru/ в браузере IE
   ' и только потом запускать этот макрос
    res = GetIECookiesFromFiles("planetaexcel.ru")
    Debug.Print res
    
    ' пример результата:
    
    ' Добавлено cookies из файлов IE: 6
    ' PHPSESSID=ZxFVnPmSxkYRIWHYk45QG1wpw67HjW4S; ct_sfw_pass_key=d923fe31370fb636c3ae0bbe78f888370; BX_USER_ID=dc035afce16c0c73611c8af1423dd; _ga=GA1.2.660066615.1645556965; _gid=GA1.2.1591444045.1644333965; _gat=1
End Sub

Изменено: Игорь - 11.02.2022 22:17:30
Получение HTML кода после полной загрузки страницы средствами VBA, Страница загружается динамически, сначала идет "заставка"
 
Ну так вы смотрели исходный код страницы в современном браузере, типа Chrome
Там тег непустой, ибо скрипт отрабатывает
Ваш же макрос использует браузер IE
Открыв ссылку в браузере IE, вы обнаружите, что отныне скрипты в нём не отрабатывают, и потому данные на странице не отображаются.
Соответственно, таким способом эти данные больше не извлечь
Рандомная ошибка в работющем кода парсинга web страницы
 
Цитата
непрерывно работающий макрос
плохо совместим с использованием CreateObject("HTMLFile"), который даёт утечку оперативной памяти
Если 2-3 раза в час макрос запускается, может и не будет проблем, а если раз в минуту, то Excel начнет выдавать случайные ошибки,
когда объём занимаемой экселем памяти превысит 1,2-1,5 гига
Именно по этой причине я изобрёл велосипед использую регулярные выражения для поиска тегов:
https://excelvba.ru/code/html
замена WebBrowser control
 
Здравствуйте.
такой замены нет, и, скорее всего, не будет
Парсинг сайта arbitr VBA, Не получается получить правильный отклик от сайта
 
В плане кода - вы всё правильно сделали
Запрос к сайту идет такой же, как из браузера
(можно, конечно, через программу Fiddler сравнить запрос из браузера IE и из макроса, — вдруг там будут какие-то отличия)

Думаю, дело в защите сайта от роботов (она там точно есть)
Возможно, корректный ответ выдаётся только в сжатом виде (gzip, deflate, br) - при запросе из браузера все способы сжатия поддерживаются, а макрос с поддержкой gzip будет непрост
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 120 След.
Наверх