I'm trying to do something like this post but with Excel VBA. I would like to submit a response on a google docs form each time a button is pressed on an Excel add-in. The addin will be an XLA file and written in VBA.
I want to be able to collect what features the users are using. If someone has a better solution, I'm open.
---Edit---
This is the form I am trying to write to (excerpt of the code for one of the fields.)
<div class="errorbox-good">
<div class="ss-item ss-item-required ss-text">
<div class="ss-form-entry">
<label for="entry_0" class="ss-q-title">
UserName
<span class="ss-required-asterisk">*</span>
</label>
<label for="entry_0" class="ss-q-help"></label>
<input type="text"
id="entry_0"
class="ss-q-short"
value=""
name="entry.0.single">
</div>
</div>
</div>
--EDIT 2-- This is what I've tried so far, but it is still not working. I am getting an error on the line that says ".UserName.Value = Environ("username")" I suspect it is because it is not finding the item .username.
Private Sub GoogleForm()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
On Error GoTo errHandler
With ie
.navigate "http://spreadsheets.google.com/viewform?hl=en&cfg=true&formkey=dHFTMzkwR2RpY2tzSUNnbVhIcDN3WWc6MA"
Do While .busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop
With .document.Forms(1)
'Username
.UserName.Value = Environ("username")
'Key
.Key.Value = "00qwe-12ckd"
.submit
End With
Do While Not CBool(InStrB(1, .document.URL, _
"cp_search_response-e.asp"))
DoEvents
Loop
Do While .busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop
MsgBox .document.all.tags("table").Item(11).Rows(1).Cells(7).innerText
End With
Exit Sub
errHandler:
ie.Quit: Set ie = Nothing
End Sub
The best solution I could find was to use sendkeys. I know it is less than ideal, but without any other feedback here, and with my limited knowledge it is best I could come up with. I have accepted this answer, and because of the bounty request I can't undo the acceptance, but if there is a better idea post here and and I will upvote and leave a comment stating it is the answer.
Sub FillOutGoogleForm()
Application.ScreenUpdating = False
Dim IE As Object
Dim uname As String
Dim ukey As String
uname = Environ("username")
ukey = "00000-123kd-34kdkf-slkf"
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
While IE.busy
DoEvents
Wend
IE.navigate "http://spreadsheets.google.com/viewform?hl=en&pli=1&formkey=dHFTMzkwR2RpY2tzSUNnbVhIcDN3WWc6MA"
While IE.busy
DoEvents
Wend
SendKeys uname
While IE.busy
DoEvents
Wend
SendKeys "{TAB}", True
SendKeys ukey
While IE.busy
DoEvents
Wend
SendKeys "{TAB}", True
SendKeys "{ENTER}", True
SendKeys "%{F4}"
Application.ScreenUpdating = True
End Sub