Я пытаюсь изменить функцию Testing (), чтобы использовать пользовательскую форму вместо поля ввода приложения. Я уже создал пользовательскую форму с вводом имени пользователя и пароля и кнопкой «Войти», но я не уверен, как должен выглядеть код кнопки входа в форму.
Я включил функцию Login, на которую она ссылается, и соответствующие объявления.
Public Sub Testing()
Dim User As String
Dim Pass As String
User = Application.InputBox("Enter Your Username")
Pass = Application.InputBox("Enter Your Password")
Const AccountID = "Cerberus"
Dim Cerberus As New Class_Cerberus
Call Cerberus.Login(AccountID, User, Pass)
Range("A1") = Cerberus.GUID
Set Cerberus = Nothing
End Sub
Private Online_ As Boolean
Private Username_ As String
Private Password_ As String
Private AccountID_ As String
Private GUID_ As String
Private GUID_Timestamp As Date
Public Function Login(Optional ByRef AccountID As String, Optional ByRef Username As String, Optional ByRef Password As String) As Boolean
If Not Online_ Then 'Verify connectivity before proceeding
If Not CheckOnline Then Exit Function
End If
'If any credentials are given at this time, store them for later use and proceed with login
If Not IsMissing(AccountID) Then AccountID_ = AccountID
If Not IsMissing(Username) Then Username_ = Username
If Not IsMissing(Password) Then Password_ = Password
If Not (Len(GUID_) = 0 Or GUID_Timestamp < (Now() - TimeSerial(8, 0, 0))) Then Login = True
Dim RawJSON As String: RawJSON = GetHTTP(BASE_URL & "?fct=login&accountid=" & AccountID_ & "&username=" & Username_ & "&password=" & Password_ & "&browserinfo=NULL&format=JSON")
Dim JSON As Object: Set JSON = JsonConverter.ParseJson(RawJSON)
Login = JSON("status") = "ok"
GUID_ = JSON("results")(1)("GUID")
GUID_Timestamp = GetDateTime(JSON("results")(1)("DATE_ALIVE"))
Set JSON = Nothing
End Function