Авторизация на сайте | макросы excel
Данный макрос выполняет 2 HTTP запроса (GET и POST) для авторизации на сайте atsenergo.ru
В случае успешной авторизации, функция возвращает идентификатор сессии,
который используется в дальнейших запросах для скачивания файлов.
Макрос представляется сайту браузером Google Chrome
Чтобы код сработал, надо задать правильные логин-пароль
Макрос опубликован в качестве примера использования объекта WinHttpRequest для работы с сайтами.
Const КодУчастника = "ABCDEFGH"Const Пользователь = "ABCDEFGH"Const Пароль = "qwerty" Function atsenergo_auth() AsString' возвращает идентификатор сессии в случае удачной авторизации, или пустую строку при ошибке OnErrorResumeNextDim oXMLHTTP AsNew WinHttpRequest With oXMLHTTP ' первый запрос - для получения идентификатора сессии .Open"GET", "https://www.atsenergo.ru/auth", False .setRequestHeader "Accept", "text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8" .setRequestHeader "Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7" .setRequestHeader "Host", "www.atsenergo.ru" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Connection", "keep-alive" .setRequestHeader "Origin", "https://www.atsenergo.ru" .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" .send cookie$ = .getResponseHeader("Set-Cookie") ' берем заголовок Set-Cookie из ответа сервера IfNot cookie$ Like"*JSESSIONID=*"Then MsgBox "Ошибка получения идентификатора сессии", vbCritical, "Обратитесь к разработчику программы"ExitFunctionEndIf ' отключаем редирект .Option(WinHttpRequestOption_EnableRedirects) = False' второй запрос - для авторизации .Open"POST", "https://www.atsenergo.ru/auth", False PostData = "partcode=" & КодУчастника & "&username=" & Пользователь & "&password=" & Пароль .setRequestHeader "Cookie", cookie$ .setRequestHeader "Accept", "text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8" .setRequestHeader "Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7" .setRequestHeader "Host", "www.atsenergo.ru" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Connection", "keep-alive" .setRequestHeader "Origin", "https://www.atsenergo.ru" .setRequestHeader "Referer", "https://www.atsenergo.ru/auth" .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" .send PostData Location$ = .getResponseHeader("Location") ' при удачной авторизации сайт перенаправляет на указанную страницу IfNot Location$ Like"*www.atsenergo.ru/nreports*"Then MsgBox "Ошибка авторизации на сайте atsenergo.ru", vbCritical, "Обратитесь к разработчику программы"ExitFunctionEndIf atsenergo_auth = cookie$ ' возвращает ID сессии, если авторизация прошла удачно EndWithEndFunction
Как войти на сайт, используя код vba в excel – статьи – 2022
Язык программирования Visual Basic для приложений (VBA) позволяет программистам Microsoft Office расширять оригинальные возможности Excel. Примером этого является программа VBA, которая может вводить информацию об учетной записи на веб-странице и отправлять эту информацию. Этот шаблон представляет собой иерархию виртуальных объектов, которые охватывают программируемые функции Excel. Отправка имени пользователя и пароля на веб-сайт с помощью VBA избавляет пользователя от неудобства при вводе его информации вручную.
Вы можете делать удивительные вещи в Excel
(Photos.com/Photos.com/Getty Images)
Откройте Excel и откройте окно кода VBA, нажав Alt F11.
Дважды щелкните элемент, который отображает «Эта рабочая книга» на панели навигации в левой части экрана. Откроется окно для ввода кодов в текущей книге.
Введите или вставьте нижеприведенную программу в появившееся окно. Эта программа вызывает оператор VBA «AppActivate», чтобы направить текущую запись приложения (Excel) в ваш браузер. Оператор «SendKeys» отправляет введенное, информацию об учетной записи и пароль в активированный браузер. Текст «{TAB}» и «~» представляют клавиши «Tab» и «Enter». Оператор «Application» указывает Excel быстро сделать паузу, чтобы дать Windows и браузеру время для обработки набранного текста и отправки его.
Замените текст «NAVIGATION_NAME» именем вашего браузера (например, «Firefox», «Internet Explorer» или «Google Chrome»), который вы будете использовать для доступа к учетной записи веб-страницы. Замените текст “YOUR_USERNAME” и “SUA_SENHA” информацией о доступе к учетной записи, которая требуется странице.
Откройте веб-страницу, к которой вы хотите получить доступ к коду.
Щелкните один из операторов в подпрограмме «SendPassword», а затем нажмите «F5», чтобы повернуть подпрограмму. Windows восстановит фокус на браузере, который включен вашей программой. Ваша программа введет и отправит информацию о доступе к учетной записи, которую вы ввели в коде.
Вставьте следующую редакцию в первую программу под программой, которая уже находится в окне разработки VBA. Эта версия «sendPassword» будет вводить не данные учетной записи для вашего кода, а значения в листе текущей рабочей книги. Основным преимуществом этого является удобство изменения регистрационной информации. Данные, хранящиеся в рабочей таблице, удобнее изменять, чем программные коды.
Public Sub sendPasswordStoredInWorksheet () Неактивное имя входа, pword, приложение app = ActiveSheet.Cells (1, 1). Значение входа = ActiveSheet.Cells (2, 1). Значение pword = ActiveSheet.Cells (3, 1). Значение AppActivate app, Истинный вход в SendKeys, True Application.Wait 1000 SendKeys “{TAB}”, True SendKeys pword, True Application.Wait 1000 SendKeys “~”, True
End Sub
Введите имя браузера и регистрационную информацию, которая была в коде первой версии программы, в трех верхних ячейках первого листа книги Excel.
В браузере выйдите из учетной записи сайта, к которой обращалась ваша первая программа, и вернитесь на страницу входа в систему. Запустите новую версию программы, следуя инструкциям на шаге 6. Сеанс этой учетной записи начнется, как на шаге 6.
Public Sub SendPassword () AppActivate “NTNAME”, True SendKeys “YourUserName”, True Application.Wait 1000 SendKeys “{TAB}”, True SendKeys “SUA_SENHA”, True Application.Wait 1000 SendKeys “~”, True End Sub
Recommended articles
This has been a guide to VBA Login. Here we discuss how to create a login form in excel VBA with the help of an example and downloadable excel sheet. You can learn more about VBA from the following articles –