如何从Office 365 OneDrive For Business帐户托管的外部工作表中获取数据?
我正在使用Office 365 Excel Online功能创建联机表单(公开共享)以收集直接保存到工作簿中工作表上的表的响应。如何从Office 365 OneDrive For Business帐户托管的外部工作表中获取数据?
要分析数据,我添加了额外的工作表,采用VBA代码和表单控件。但是,表单控件不受Excel Online支持,所以我认为我需要两个工作簿。一个用于存储表单数据,另一个用于对数据进行分析。包含该窗体的文件必须保留在Office 365 Onedrive for Business上才能使用该功能。 如果我离开表单控件并尝试打开Excel Online中的文件(以编辑/共享表单),我必须编辑一个删除控件的副本 - 它不会忽略它们。
分析工作簿将由多人在多台PC上打开。我已经启用匿名访问的表单文件,这就是Onedrive给我: https://carlisleft-my.sharepoint.com/personal/dmartin_carlisleft_onmicrosoft_com/_layouts/15/guestaccess.aspx?docid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&authkey=XXXXXXXXXXXXXXXXXXX
我使用获取外部数据和新的查询从文件并指定这个URL,但我要么可以访问Web界面的尝试它不会下载任何与URL相关的数据或Sharepoint表,但不会下载我需要的实际数据。
我现在想用VBA下载文件的副本,在后台本地打开它,读取表格数据,将它复制到分析文件中,然后删除下载,关闭连接。我假设使用正确的代码,我可以正确使用docid和authkey。
我已经使用Application.GetOpenFilename和Workbooks.Open()为本地存储的文件,但它不适用于此。我找到了这个答案Access Shared Files in Onedrive For Business但它不是VBA,也不是很清楚。我也发现这that talks about WebDav,但那是我需要做什么?
有没有人有任何想法或发现一个成功的方法从OneDrive for Business Excel文件获取Excel数据?我必须能够在任何Windows 10 PC上打开它。所以如果我必须映射网络驱动器,他们必须在飞行中完成。
看起来好像这个问题并不那么简单。我的解决方案是把它打开。而不是有两个单独的文件必须相互通信。只需保留一个文件即可让Excel Online获得所需的内容;一个没有表单控件的文件。
使用来自网站的信息非常好tutorial and examples for creating form controls with VBA。每当我在Excel桌面中启动工作表时,我都能够编写创建表单控件的过程。在文件保存之前,它们被删除。 Excel Online不运行VBA代码,因此没有看到任何控件并打开文件。 Excel Desktop运行代码并创建控件,以便用户可以在界面中使用它们。
只需使用ThisWorkbook对象中的Workbook_Open()
和Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
事件即可使Excel运行您的代码。
删除所有的表单控件的BeforeSave的代码看起来有点像这样:
Sub deleteAll()
'deletes all msoFormControl in the current Workbook
Dim shpControl As Shape
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
For Each shpControl In ws.Shapes
If shpControl.Type = msoFormControl Then
shpControl.delete
End If
Next shpControl
Next ws
End Sub
考虑使用surveymonkey代替 - 它是免费的基本使用。我不为他们工作。我只知道你正在做的事可能不会奏效。 –