from combo box data - > Open website with username and password

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • AdamOnAccess
    New Member
    • Aug 2008
    • 99

    #1

    from combo box data - > Open website with username and password

    I have a form with a combo box called "cmbWebsite s".

    The combo box row source comes from a select query that returns rows:

    0.WebsiteID
    1.Website Name
    2.Website URL
    3.Username
    4.Password

    Only "Website Name" appears in the combo box. The other columns are set to zero length.

    When the user selects a website, the AfterUpdate event will trigger code to build a string that contains the URL, Username and Password of the selected website, and runs it through the FollowHyperlink method.

    The only thing I don't know how to do is format the hyperlink so the websites will accept the username and password and automatically get me into the site; like "Roboform".

    Even though this isn't a pure MS Access question, I can't imagine that other Access developers haven't done something similar.

    Does anyone know how to format a URL with Username and Password, so the FollowHyperlink method automatically gets you into the site?

    Thanks,
    Adam
  • mshmyob
    Recognized Expert Contributor
    • Jan 2008
    • 903

    #2
    Originally posted by AdamOnAccess
    I have a form with a combo box called "cmbWebsite s".

    The combo box row source comes from a select query that returns rows:

    0.WebsiteID
    1.Website Name
    2.Website URL
    3.Username
    4.Password

    Only "Website Name" appears in the combo box. The other columns are set to zero length.

    When the user selects a website, the AfterUpdate event will trigger code to build a string that contains the URL, Username and Password of the selected website, and runs it through the FollowHyperlink method.

    The only thing I don't know how to do is format the hyperlink so the websites will accept the username and password and automatically get me into the site; like "Roboform".

    Even though this isn't a pure MS Access question, I can't imagine that other Access developers haven't done something similar.

    Does anyone know how to format a URL with Username and Password, so the FollowHyperlink method automatically gets you into the site?

    Thanks,
    Adam
    I guess that would depend on the format that the Web site requires. For instance I have a map button for my addresses and I open a google map to display my contacts driving directions. The string I send to google maps is based on their format.

    I also retrieve stock and index indormation from numerous sites but they require me to pass a string in a certain syntax.

    All you need to figure out is what syntax the site expects and do something like so:

    [code=vb]
    Dim strURL As String
    strURL = "http://maps.google.com/maps?q=" & txtAddrStreet & ",+" & txtAddrCity & ",+" & txtAddrProv & "+" & txtAddrPostal & "+" & txtAddrCountry
    Application.Fol lowHyperlink strURL
    [/code]

    cheers,

    Comment

    • AdamOnAccess
      New Member
      • Aug 2008
      • 99

      #3
      mshmyob,

      Thanks for the reply. I know I need the format, but I was thinking that perhaps there was some kind of "standard" for usernames and passwords. Are you familiar with the program, "Roboform". It maintains usernames and passwords for any site you choose. Just click a button, and it stores the URL, username and password. When you want to return to the site, you just click it and in you go. How does Roboform manage to send usernames and passwords to ANY website without first knowing the format?

      There must be some standard way to do this. Any one know how?

      -Adam

      Comment

      • NeoPa
        Recognized Expert Moderator MVP
        • Oct 2006
        • 32669

        #4
        I'm not familiar with RoboForm Adam, but from your own description, it seems that it holds it per site. I expect it determines the format from usage somehow (and stores it with your username and password in its database). I certainly think (no great expert at this to be sure so don't take as gospel) that Mshmyob is on the right lines with this though.

        Comment

        • mshmyob
          Recognized Expert Contributor
          • Jan 2008
          • 903

          #5
          I will try and look into it this weekend. I have done a little research and thrown something together but I am having a few errors. Give me a couple of days and I will see what I can come up with if anything.

          cheers,

          Comment

          • ADezii
            Recognized Expert Expert
            • Apr 2006
            • 8834

            #6
            I'm not sure of the specific syntax, but you may be able to use the ExtraInfo Parameter of the FollowHyperlink Method to accomplish this.

            Comment

            • ADezii
              Recognized Expert Expert
              • Apr 2006
              • 8834

              #7
              Originally posted by AdamOnAccess
              I have a form with a combo box called "cmbWebsite s".

              The combo box row source comes from a select query that returns rows:

              0.WebsiteID
              1.Website Name
              2.Website URL
              3.Username
              4.Password

              Only "Website Name" appears in the combo box. The other columns are set to zero length.

              When the user selects a website, the AfterUpdate event will trigger code to build a string that contains the URL, Username and Password of the selected website, and runs it through the FollowHyperlink method.

              The only thing I don't know how to do is format the hyperlink so the websites will accept the username and password and automatically get me into the site; like "Roboform".

              Even though this isn't a pure MS Access question, I can't imagine that other Access developers haven't done something similar.

              Does anyone know how to format a URL with Username and Password, so the FollowHyperlink method automatically gets you into the site?

              Thanks,
              Adam
              Just retrieve the Username and Password Control Names as well as the Form Name from the Web Site (View Source), and you should be OK:
              Code:
              Dim objIE As Object
              Set objIE = CreateObject("InternetExplorer.Application")
               
              With objIE
                .Visible = True
                .Navigate "<Your Web Site>"
                      
                 Do While .ReadyState <> 4
                   DoEvents
                 Loop
               
                 With .Document.Forms(0)
                   .UserName.Value = "your login"         'Retrieve Control Name from Web Page
                   .Password.Value = "your password"      'Retrieve Control Name from Web Page
                     .Document.loginForm.submit           'Retrieve Form Name from Web Page
                 End With
              End With

              Comment

              • ADezii
                Recognized Expert Expert
                • Apr 2006
                • 8834

                #8
                I've developed some code that is slightly convoluted, does not require advance knowledge of any Control/Form Names, and actually worked very well during many trials. It involves the use of the FollowHyperlink Method, SendKeys, and the Sleep() API Function. You can judge for yourself:
                1. Declare the API Function:
                  Code:
                  Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
                2. Execute the following code block:
                  Code:
                  Const conWEB_ADDRESS As String = "<YaDa, YaDa, YaDa>"
                  Const conUSERNAME As String = "<more YaDa, YaDa>"
                  Const conPASSWORD As String = "<still more YaDa, YaDa>"
                  
                  Application.FollowHyperlink Address:=conWEB_ADDRESS
                  
                  Sleep (3000)    'Delay 3 seconds
                  SendKeys conUSERNAME, True      'Plug in User Name
                  
                  Sleep (1000)    'Delay 1 second
                  SendKeys "{TAB}", True          'Send the TAB Keystroke
                  
                  Sleep (1000)    'Delay 1 second
                  SendKeys conPASSWORD, True      'Plug in Password
                  
                  Sleep (1000)    'Delay 1 second
                  SendKeys "{TAB}", True          'Send the TAB Keystroke
                  
                  Sleep (1000)    'Delay 1 second
                  SendKeys "{ENTER}"              'Send the ENTER Keystroke

                NOTE: You can experiment with the Delays for better performance.

                Comment

                • mshmyob
                  Recognized Expert Contributor
                  • Jan 2008
                  • 903

                  #9
                  Here is a simple way of submitting your username and password to various sites.

                  [code=vb]
                  ' you need a reference to the Microsoft HTML Object Library
                  Dim webBrowser As Object
                  Set webBrowser = CreateObject("I nternetExplorer .Application")

                  With webBrowser
                  .Navigate "put your login URL here"
                  .Visible = True
                  ' loop until the page has finished loading
                  Do While webBrowser.read yState <> 4
                  DoEvents
                  Loop
                  ' username and password are the default element names - if they are different you need to figure them out and change accordingly
                  .Document.all.I tem("USERNAME") .Value = "your username"
                  .Document.all.I tem("PASSWORD") .Value = "your password"
                  End With
                  [/code]

                  cheers,
                  Last edited by mshmyob; Nov 1 '09, 08:32 PM. Reason: PS: just noticed it looks like ADezii's version - lol

                  Comment

                  • AdamOnAccess
                    New Member
                    • Aug 2008
                    • 99

                    #10
                    Mshmyob, ADezii, NeoPa,

                    Thanks all! Lot's of great stuff to work with here. My biggest problem now is deciding which solution is best? It seems the real tricky part here is capturing the object names for username and password in the html form. I suppose I could create fields in the database to store that info, use view page to capture the actual names, and then slug them in when I run the code.

                    Not the kind of thing I'd expect most users to pull off. I could set "Username" and "Password" as default field names and that will probably cover most of it.
                    Thanks again!

                    -Adam

                    Comment

                    • AdamOnAccess
                      New Member
                      • Aug 2008
                      • 99

                      #11
                      ok, I got pretty far with it but than got hung up at the last moment. Here's what is happening...

                      Code:
                      With Me!cmbWebSiteID
                         strURL = .Column(1)
                         strUNtag = .Column(3)
                         strUNtag = Chr(34) & strUNtag & Chr(34)
                         strPWtag = .Column(4)
                         strPWtag = Chr(34) & strPWtag & Chr(34)
                         strMyUN = .Column(6)
                         strMyPW = .Column(7)
                         strSubmitButton = .Column(5)
                         strSubmitButton = Chr(34) & strSubmitButton & Chr(34)
                      End With
                      
                      
                      Dim webBrowser As Object
                      Set webBrowser = CreateObject("InternetExplorer.Application")
                        
                      With webBrowser
                          .Navigate strURL
                          .Visible = True
                              ' loop until the page has finished loading
                              Do While webBrowser.readyState <> 4 Or webBrowser.Busy
                                 DoEvents
                              Loop
                             ' username and password are the default element names - if they are different you need to figure them out and change accordingly
                             .Document.All.Item(strUNtag).Value = strMyUN
                             .Document.All.Item(strPWtag).Value = strMyPW
                             .Document.All.Item(strSubmitButton).Click
                      End With
                      When I run the code, I get this error message...

                      "Method 'Item' of Object 'NameOfForm' Failed"

                      The error occurs on this line:
                      .Document.All.I tem(strUNtag).V alue = strMyUN

                      if I remove the variable and run it as a fixed string like this...
                      .Document.All.I tem("Nick").Val ue = strMyUN

                      ... with "Nick" being the actual name of the Username field on the HTML page, the code works perfectly.

                      Does anyone know how I can get it to run with the variable?

                      Thanks,
                      Adam

                      Comment

                      • mshmyob
                        Recognized Expert Contributor
                        • Jan 2008
                        • 903

                        #12
                        Originally posted by AdamOnAccess
                        ok, I got pretty far with it but than got hung up at the last moment. Here's what is happening...

                        Code:
                        With Me!cmbWebSiteID
                           strURL = .Column(1)
                           strUNtag = .Column(3)
                           strUNtag = Chr(34) & strUNtag & Chr(34)
                           strPWtag = .Column(4)
                           strPWtag = Chr(34) & strPWtag & Chr(34)
                           strMyUN = .Column(6)
                           strMyPW = .Column(7)
                           strSubmitButton = .Column(5)
                           strSubmitButton = Chr(34) & strSubmitButton & Chr(34)
                        End With
                        
                        
                        Dim webBrowser As Object
                        Set webBrowser = CreateObject("InternetExplorer.Application")
                          
                        With webBrowser
                            .Navigate strURL
                            .Visible = True
                                ' loop until the page has finished loading
                                Do While webBrowser.readyState <> 4 Or webBrowser.Busy
                                   DoEvents
                                Loop
                               ' username and password are the default element names - if they are different you need to figure them out and change accordingly
                               .Document.All.Item(strUNtag).Value = strMyUN
                               .Document.All.Item(strPWtag).Value = strMyPW
                               .Document.All.Item(strSubmitButton).Click
                        End With
                        When I run the code, I get this error message...

                        "Method 'Item' of Object 'NameOfForm' Failed"

                        The error occurs on this line:
                        .Document.All.I tem(strUNtag).V alue = strMyUN

                        if I remove the variable and run it as a fixed string like this...
                        .Document.All.I tem("Nick").Val ue = strMyUN

                        ... with "Nick" being the actual name of the Username field on the HTML page, the code works perfectly.

                        Does anyone know how I can get it to run with the variable?

                        Thanks,
                        Adam
                        Just change your declaration for your elements (strUNtag, etc.) like so:

                        dim strUNtag

                        Don't try to add quotes or anything. Do not declare it as string or anything. Or leave out the declarations completeley and it will work.

                        cheers,

                        Comment

                        • AdamOnAccess
                          New Member
                          • Aug 2008
                          • 99

                          #13
                          Works great! Thanks MshMyob!

                          Comment

                          Working...