当外部工作表托管在 Office 365 OneDrive For Business 帐户上时,如何从其获取数据?
How do I get data from an external worksheet when it's hosted on an Office 365 OneDrive For Business Account?
我正在使用 Office 365 Excel 在线功能,可以创建在线表单(公开共享)来收集直接保存到工作表 table 的回复在工作簿中。
为了分析数据,我添加了使用 VBA 代码和表单控件的额外工作表。但是,Excel Online 不支持表单控件,所以我想我需要两个工作簿。一个用于存储表单数据,另一个用于对数据进行 运行 分析。包含表单的文件必须保留在 Office 365 Onedrive For Business 上才能使用该功能。 如果我保留表单控件并尝试在 Excel 在线打开文件(到 edit/share 表单),我必须编辑一个删除控件的副本 - 它不会'不要忽视他们。
分析工作簿将由多个人在多台 PC 上打开。我已经启用了对表单文件的匿名访问,这就是 Onedrive 给我的:
https://carlisleft-my.sharepoint.com/personal/dmartin_carlisleft_onmicrosoft_com/_layouts/15/guestaccess.aspx?docid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&authkey=XXXXXXXXXXXXXXXXXXX
我已经尝试使用“从文件获取外部数据和新查询”并指定此 URL 但我要么访问不下载任何数据的 Web 界面,要么访问 Sharepoint table与 URL 有关,但与我需要的实际数据无关。
我现在想用VBA下载一份文件,在后台本地打开,读取table数据,复制到分析文件中,然后删除下载,关闭连接。我假设使用正确的代码,我可以正确使用 docid 和 authkey。
我已将 Application.GetOpenFilename 和 Workbooks.Open() 用于本地存储的文件,但它不适用于此。我找到了这个答案 Access Shared Files in Onedrive For Business but it's not VBA and not very clear. I also found this that talks about WebDav 但这是我需要做的吗?
有没有人有任何想法或找到了从 OneDrive for Business excel 文件中获取 Excel 数据的成功方法?我必须能够让它在任何 Windows 10 PC 上打开。因此,如果我必须映射网络驱动器,则必须即时完成。
看来这个问题不是那么简单。我的解决方案是把它翻过来。而不是有两个必须相互通信的单独文件。只保留一个文件,让 Excel 在线获得它想要的东西;没有表单控件保存的文件。
使用来自一个非常好的网站的信息tutorial and examples for creating form controls with VBA。每次在 Excel Desktop 中启动工作表时,我都能够编写创建表单控件的过程。在保存文件之前,它们会被删除。 Excel Online 没有 运行 VBA 代码,因此看不到任何控件并打开文件。 Excel 桌面 运行 编写代码并创建控件,以便用户可以在界面中使用它们。
只需使用 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
我正在使用 Office 365 Excel 在线功能,可以创建在线表单(公开共享)来收集直接保存到工作表 table 的回复在工作簿中。
为了分析数据,我添加了使用 VBA 代码和表单控件的额外工作表。但是,Excel Online 不支持表单控件,所以我想我需要两个工作簿。一个用于存储表单数据,另一个用于对数据进行 运行 分析。包含表单的文件必须保留在 Office 365 Onedrive For Business 上才能使用该功能。 如果我保留表单控件并尝试在 Excel 在线打开文件(到 edit/share 表单),我必须编辑一个删除控件的副本 - 它不会'不要忽视他们。
分析工作簿将由多个人在多台 PC 上打开。我已经启用了对表单文件的匿名访问,这就是 Onedrive 给我的: https://carlisleft-my.sharepoint.com/personal/dmartin_carlisleft_onmicrosoft_com/_layouts/15/guestaccess.aspx?docid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&authkey=XXXXXXXXXXXXXXXXXXX
我已经尝试使用“从文件获取外部数据和新查询”并指定此 URL 但我要么访问不下载任何数据的 Web 界面,要么访问 Sharepoint table与 URL 有关,但与我需要的实际数据无关。
我现在想用VBA下载一份文件,在后台本地打开,读取table数据,复制到分析文件中,然后删除下载,关闭连接。我假设使用正确的代码,我可以正确使用 docid 和 authkey。
我已将 Application.GetOpenFilename 和 Workbooks.Open() 用于本地存储的文件,但它不适用于此。我找到了这个答案 Access Shared Files in Onedrive For Business but it's not VBA and not very clear. I also found this that talks about WebDav 但这是我需要做的吗?
有没有人有任何想法或找到了从 OneDrive for Business excel 文件中获取 Excel 数据的成功方法?我必须能够让它在任何 Windows 10 PC 上打开。因此,如果我必须映射网络驱动器,则必须即时完成。
看来这个问题不是那么简单。我的解决方案是把它翻过来。而不是有两个必须相互通信的单独文件。只保留一个文件,让 Excel 在线获得它想要的东西;没有表单控件保存的文件。
使用来自一个非常好的网站的信息tutorial and examples for creating form controls with VBA。每次在 Excel Desktop 中启动工作表时,我都能够编写创建表单控件的过程。在保存文件之前,它们会被删除。 Excel Online 没有 运行 VBA 代码,因此看不到任何控件并打开文件。 Excel 桌面 运行 编写代码并创建控件,以便用户可以在界面中使用它们。
只需使用 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