当它驻留在Office 365 OneDrive for Business帐户上时,如何从外部工作表中获取数据?

我正在使用Office 365 Excel Onlinefunction创build联机表单(公开共享)以收集直接保存到工作簿中工作表上的表的响应。

为了分析数据,我添加了使用VBA代码和表单控件的额外工作表。 但是,表单控件不受Excel Online支持,所以我认为我需要两个工作簿。 一个用于存储表单数据,另一个用于对数据进行分析。 包含该窗体的文件必须保留在Office 365 Onedrive for Business上才能使用该function。 如果我离开表单控件并尝试打开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下载文件的副本,在后台本地打开它,读取表格数据,将其复制到分析文件中,然后删除下载,closures连接。 我假设使用正确的代码,我可以正确使用docid和authkey。

我已经使用Application.GetOpenFilename和Workbooks.Open()为本地存储的文件,但它不适用于此。 我发现这个答案访问共享文件在Onedrive业务,但它不是VBA,不是很清楚。 我也发现这个谈论WebDav,但是我需要做什么?

有没有人有任何想法或find一个成功的方法来从OneDrive for Business Excel文件获取Excel数据? 我必须能够在任何Windows 10 PC上打开它。 所以如果我必须映射networking驱动器,他们必须在飞行中完成。

看起来这个问题并不那么直截了当。 我的解决办法是把它打开。 而不是有两个单独的文件,必须相互沟通。 只需保留一个文件,使Excel Online可以满足需要; 一个文件保存没有窗体控件。

使用来自一个网站的信息,这个网站有一个非常好的教程和用VBA创build表单控件的例子 。 我能够编写每次在Excel桌面中启动工作表时创build表单控件的过程。 文件保存之前,他们被删除。 Excel Online不运行VBA代码,所以没有看到任何控件并打开文件。 Excel Desktop运行代码并创build控件,以便用户可以在界面中使用它们。

只需在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