Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 19:16:46

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Получение и отправка данных на интернет ресурс VBA
Страниц: [1]   Вниз
Печать
Автор Тема: Получение и отправка данных на интернет ресурс VBA  (Прочитано 3295 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kelbrock
Новичок
*

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« : 03.02.2020, 13:35:00 »

Добрый день!
Прошу знающих людей помочь с решением проблемы.
Есть следующая задача:
При открытии файла excel Запускается форма в которой Пользователь вводит логин и пароль. После нажатия на кнопку "OK" эти данные должны хешироваться и отправится на сервер, где будет происходить идентификация, Excel должен их получить и предоставить / заблокировать доступ.
Как ли это реализовать в VBA? Знания в Vba минимальные, а поиск на просторах интернета вразумительного ответа не дал.
Заранее спасибо!
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 03.02.2020, 13:37:35 »

Знания в Vba минимальные
Тогда не стоит и пытаться на данном этапе. У подобных задач очень узкая специфика и очень многое зависит от сервера, правильного типа передаваемых и получаемых данных. Нет единого образца кода для всех сайтов и серверов.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Kelbrock
Новичок
*

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #2 : 03.02.2020, 14:57:28 »

Тогда не стоит и пытаться на данном этапе. У подобных задач очень узкая специфика и очень многое зависит от сервера, правильного типа передаваемых и получаемых данных. Нет единого образца кода для всех сайтов и серверов.
Сайт должен получать MD5 хэш, полученный из окон формы отдать true/false
Мне хотя бы узнать какие функции изучать для этого...
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #3 : 03.02.2020, 16:46:08 »

должен получать MD5 хэш
Вот это и вбейте в поисковик: MD5 на VBA.
какие функции изучать для этого
Нет прям готовых функций для таких случаев. И изучать надо все, что относится к отправке данных по интернет. Способы есть разные: через Explorer, через спец.библиотеки вроде MSXML2.XMLHTTP и WebRequest. В общем начните с самого начала. На сайте здесь же тоже есть несколько статей с обращением к Интернет:
Перевод текста в ячейках через Google
Получить курс валют от ЦБР
Да и в интернете примеров хватает.

Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Kelbrock
Новичок
*

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 8


Просмотр профиля E-mail
« Ответ #4 : 19.02.2020, 13:39:02 »

Часть кода продублировалась, отредактировать сообщение не удается. Исправленно

Код:
Function GetHash(ByVal txt$) As String
    Dim oUTF8, oMD5, abyt, i&, k&, hi&, lo&, chHi$, chLo$
    Set oUTF8 = CreateObject("System.Text.UTF8Encoding")
    Set oMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
    abyt = oMD5.ComputeHash_2(oUTF8.GetBytes_4(txt$))
    For i = 1 To LenB(abyt)
        k = AscB(MidB(abyt, i, 1))
        lo = k Mod 16: hi = (k - lo) / 16
        If hi > 9 Then chHi = Chr(Asc("a") + hi - 10) Else chHi = Chr(Asc("0") + hi)
        If lo > 9 Then chLo = Chr(Asc("a") + lo - 10) Else chLo = Chr(Asc("0") + lo)
        GetHash = GetHash & chHi & chLo
    Next
    Set oUTF8 = Nothing: Set oMD5 = Nothing
End Function

Sub CommandButton1_Click()
UserForm1.Hide
    txt = TextBox1 & TextBox2
    res = GetHash(txt)
     ActiveWorkbook.Worksheets.Add
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;https://сайт/index.php?sfunc=exdata&hash=" & res & "&lg=" & TextBox1, Destination:=Range( _
        "$A$1"))
        .Name = "index.php?sfunc=exdata&hash="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
« Последнее редактирование: 19.02.2020, 14:00:03 от Дмитрий Щербаков(The_Prist) » Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru