首页 文章

如何在Office 365 OneDrive For Business帐户上托管外部工作表时获取数据?

提问于
浏览
1

我正在使用Office 365 Excel Online功能,可以创建一个在线表单(公开共享)来收集直接保存到工作簿中工作表上的表的响应 .

为了分析数据,我添加了使用VBA代码和表单控件的额外工作表 . 但是,Excel Online不支持表单控件,因此我认为我需要两个工作簿 . 一个用于存储表单数据,另一个用于对数据进行分析 . 包含表单的文件必须保留在Office 365 Onedrive For Business上才能使该功能正常工作 . 如果我保留表单控件并尝试在Excel Online中打开文件(编辑/共享表单),我必须编辑一个删除控件的副本 - 它不会忽略它们 .

分析工作簿将由多个人在多个PC上打开's. I'已启用对表单文件的匿名访问,这就是Onedrive给我的:https://carlisleft-my.sharepoint.com/personal/dmartin_carlisleft_onmicrosoft_com/_layouts/15/guestaccess.aspx?docid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&authkey=XXXXXXXXXXXXXXXXXXX

我尝试过使用Get External Data和New Query From File并指定此URL,但我可以访问不下载任何数据的Web界面或与URL相关的Sharepoint表,但不能访问我需要的实际数据 .

我现在正在考虑使用VBA下载文件的副本,在后台本地打开它,读取表数据,将其复制到分析文件中,然后删除下载,关闭连接 . 我假设使用正确的代码,我可以正确使用docid和authkey .

我为此工作了.1466574为此工作 . 我找到了这个答案Access Shared Files in Onedrive For Business但它不是VBA而且不是很清楚 . 我也发现了这个that talks about WebDav但是我需要做什么?

有没有人有任何想法或找到从OneDrive for Business excel文件获取Excel数据的成功方法?我必须能够在任何Windows 10 PC上打开它 . 因此,如果我必须映射网络驱动器,它们必须在运行中完成 .

1 回答

  • 1

    看起来好像这个问题不是那么直截了当 . 我的解决方案是把它转过头来 . 而不是有两个必须相互通信的独立文件 . 只需保留一个文件即可为Excel Online提供所需内容;保存没有表单控件的文件 .

    使用来自具有非常好的tutorial and examples for creating form controls with VBA的网站的信息 . 每次我在Excel Desktop中启动工作表时,我都能编写创建表单控件的过程 . 在保存文件之前,它们运行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
    

相关问题