2017-10-14 134 views
1

我已经打在砖墙我的头以下的可爱的难题:上传Excel电子表格,以谷歌表

的一点是让从Excel到谷歌表数据,而无需上传文件,而是通过去网址。下面轻易解释所有的企业如何蒸腾作用:

https://www.youtube.com/watch?v=mX2_XNYPGiI http://ramblings.mcpher.com/Home/excelquirks/exceldocsintegration/excelsheetsv4

我试着去适应下面的代码的东西VBA侧,共同为这两个例子:

Option Explicit 

Sub GetDataFromGoogle() 

'link to tutorial: https://www.youtube.com/watch?v=mX2_XNYPGiI 

Dim link As String 

link = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSes7Jb06JRy8KSFyNlpUSzNQxSB_HZay4S8AB2IqzpZP0QdwGO5PFSS-6uzd8v_GsjlkXM31pby2jE/pubhtml" 
Sheet4.QueryTables(1).Connection = "URL;" & link 
Sheet4.QueryTables(1).Refresh False 
Sheet4.Columns(1).ColumnWidth = 10 

End Sub 

Sub PushDataToGoogle() 



Dim link As String 

link = "https://docs.google.com/forms/d/e/1FAIpQLSeDHEKJmRDynwOAS4g53T9AVMtpXQkWsRGbAzLpLI7rdsbiFA/formResponse?entry.1155739640=4&fvv=1&draftResponse=%5B%5B%5Bnull%2C1155739640%2C%5B%224%22%5D%0D%0A%2C0%5D%0D%0A%5D%0D%0A%2Cnull%2C%2276341394568976993%22%5D%0D" 
'go to that link, refresh it and ensure that the first column isn't too narrow 

sheets("Sheet4").QueryTables(1).Connection = "URL;" & link 

sheets("Sheet4").QueryTables(1).Refresh True 
sheets("Sheet4").Columns(1).ColumnWidth = 10 

End Sub 

在在Google表格方面,我使用表格来创建电子表格,该电子表格既是Excel导入的数据源,也是数据导出的目的地。在表单页面的HTML中重新定位POST和GET是获取目标URL的方式。随后,该URL可以是硬编码的或与变量以获得各种输入所编辑的“条目。######”的URL的一部分,然后将它们传递给片材中的下一个可用线路,这将适合我的目的。

我碰钉子(S)与所述操作的OAuth2一部分。从桌面上的解放位点(上述第二连杆)的例子中,从谷歌创建的证书,然后插入到用于认证发送所述数据之前的连接的代码。因此:

Private Function sheetsOnceOff() 

    getGoogled "sheets", , _ 
    "1023445954023-hq8gkdcmo9sue822d23gy9ak5hmun27.apps.googleusercontent.com", _ 
    "dX7ABCDEGFBETFWtvX5ShmDfrgrQ" 

End Function 

如果没有这样做,先前的代码行将返回主要的Google登录页面。我所做的凭据,确定了电子表格中的目的地键,但我得到的getGoogled程序一个错误,指出:

Runtime-error: '-2147024809 (80070057)': The parameter is incorrect."

参数值如下: - 范围=“张”,因为它应该是 - 更换包= “” - clientID的是OK - clientSecret是OK - 抱怨=真 - cloneFromScope = “” - apikey = “”

我想更换包不应该如果抱怨是真的,那就空了,但我觉得我已经超出了我的深度这里。至少需要做些什么逻辑对我来说很有意义,我已经成功地得到谷歌表转移到精细的工作,但我只是不知道如何处理的oauth2认证问题。

预先感谢您。

回答

0

事实证明,该解决方案是相当简单,由于硒基本库,可在这里,有很多有用的信息关于它如何工作的:

https://codingislove.com/browser-automation-in-excel-selenium/

的关注的说明:此下载需要Selenium GoogleChrome驱动程序版本2.33,当前最新版本,以解决Chrome启动错误 - 至少在我的情况,我需要Chrome而不是IE工作。

在任何情况下,Selenium都是处于类似情况的人的上帝。当您下载并安装Selenium时,请进入VB编辑器中的工具 - >参考,并启用Selenium类型库。

下面的代码将做的工作:

Option Explicit 
Dim myHTML_Element As IHTMLElement 
Dim Driver As New WebDriver 

Sub seleniumtutorial() 

Dim pword As String 
Dim link As String, link2 As String 

pword = ThisWorkbook.sheets("Sheet1").Range("D10") 

Driver.Start "chrome", "https://gmail.com" 
Driver.Get ("https://gmail.com") 
Driver.FindElementById("identifierId").SendKeys "[email protected]" 
Driver.FindElementById("identifierNext").Click 
'Driver.Get ("https://sso.diversey.com/nidp/saml2/sso?id=DIVAuthContract30&sid=0&option=credential&sid=0") 
Driver.FindElementById("uname").SendKeys "Username" 
Driver.FindElementById("pass").SendKeys pword 
Driver.FindElementByName("loginButton2").Click 

link = "https://docs.google.com/forms/d/e/1FAIpQLSeDHEKJmRDyMt7rdsbiFA/formResponse?entry.1155739640=7&fvv=1&draftR=%5B%5B%5Bnull%2C115B%224%22%5D%0D%0A%2C0%5D%%0A%5D%0D%0A%2Cnull%2C%227634134997568976993%22%5D%0D" 
link2 = "https://docs.google.com/spreadsheets/d/1W8A3UuyeEwk6-hqERvuIMT_HInySBOIs/edit#gid=1126962360" 

Driver.Get (link) 
Driver.Get (link2) 

End Sub 

链接和链接2分别是,它确认响应已提交和LINK2是连接到具有响应列表中的电子表格的页面。你可以把这个例程分成两个用户下的一个日志,另一个创建一个要输入到google的项目的数组,在这些点上它只是用新值刷新同一页面,因为它循环循环或数组。

还有一个链接: Selenium VBA - exit sub without close browser window

使变量公共确保浏览器窗口不会关闭在会议结束时,或者你可以宣布他们的第一子里面,如果你希望它关闭。至于凭证,您可以硬编码或从电子表格中提供它们,但这是一个技术问题。除此之外,它似乎是一个非常简单的例程,它确实做得很好。

Selenium库的语法明显比VBA更现代化,我会说它更强大

0

以下是绝不是一个完整的解决方案,但它是一个基本的起点。下面的条件将被记录到gmail中,并且它会将一段数据移动到带有时间戳的Google工作表中。它通过直接打开用户在表单上单击提交后出现的页面来工作,从而模仿提交。 Link2打开传递响应的电子表格。

的缺点是,它要求用户必须登录到Gmail已经和一个变量传递每次将打开新的标签页,因此避免与阵列或环修改它。不过,我会尝试将此前的vba gmail项目放在一起,以查看是否可以工作。更多的将会出现,但是对于一个黑客一起的创可贴解决方案,如果有人需要它,这将会实现。

版权和信息在这里:

[https://p2overflowflow.com。com/questions/3166265/open-an-html-page-in-default-browser-with-vba https://stackoverflow.com/questions/5915325/open-google-chrome-from-vba-excel

Sub PushDataToGoogle() 

Dim chromePath As String 

chromePath = """C:\Program Files\Google\Chrome\Application\chrome.exe""" 

Dim link As String, link2 As String 

link = "https://docs.google.com/forms/d/e/1FAIpQLSeDHEKJmRDynwOAS4gtpXQkWsRGbAzLpLI7rdsbiFA/formResponse?entry.1155739640=4&fvv=1&draftResponse=%5B%5B%5Bnull%2C11557396%224%22%5D%0D%0A%2C0%5D%0D%0A%5D%0D%0A%2Cnull%2C%227634134997568976993%22%5D%0D" 
link2 = "https://docs.google.com/spreadsheets/d/1W8A3UuFQTeEwk6-hqERvuIMT_HInySZTNBOIs/edit#gid=11262360" 

Shell (chromePath & link) 

ThisWorkbook.FollowHyperlink link2 

End Sub