2017-08-24 45 views
1

我正在使用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上打開它。所以如果我必須映射網絡驅動器,他們必須在飛行中完成。

+0

考慮使用surveymonkey代替 - 它是免費的基本使用。我不爲他們工作。我只知道你正在做的事可能不會奏效。 –

回答

1

看起來好像這個問題並不那麼簡單。我的解決方案是把它打開。而不是有兩個單獨的文件必須相互通信。只需保留一個文件即可讓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 
相關問題