来自不同用户的位于 OneDrive 上的 Excel 工作簿的 Excel 查询

Posted

技术标签:

【中文标题】来自不同用户的位于 OneDrive 上的 Excel 工作簿的 Excel 查询【英文标题】:Excel Queries from Excel Workbook located on OneDrive From Different Users 【发布时间】:2021-04-07 14:41:41 【问题描述】:

朋友们,

我目前正在使用以下来源将数据从 OneDrive 中的 excel 文件中提取到我的电子表格中。

= Excel.Workbook(File.Contents("C:\Users\Bob Saggat\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true)

我使用以下代码从 VBA 模块中的 OneDrive 文件夹成功地将数据发布到具有不同用户的文件,代码如下:

Workbooks.Open("C:\Users\" & Environ("username") & "\OneDrive - USS Enterprise\Prototype\OrdersMasterProto.xlsm")

我希望在代码中的 Power Query 编辑器中使用 Environ("username") 以使文件源正常工作。

= Excel.Workbook(File.Contents("C:\Users\" & Environ("username") & "\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true)

当我这样做时,我收到以下错误:Expression.Error:无法识别名称“Environ”。确保拼写正确。

这里有什么解决办法?

一些 GoogleFu 建议我将文件托管在 SharePoint 而不是 OneDrive 上,但我完全没有 SharePoint 经验,我认为我缺少一个简单的解决方案。

一如既往,我们非常感谢您的智慧和善意。

谢谢

--

现在,我在加载时调用此模块以查找用户名并将其放入命名范围。这行得通。

Sub GetUsernameForDataSource()
Dim OrderRunTemplate As Worksheet

Set OrderRunTemplate = ThisWorkbook.Worksheets("Order Run Template")

LocalUsername = Environ("username")

'May need to clear the CurrentUser named ranged first then add the user so it doesn't add multiple users


'Adding LocalUsername to named range to use as source in PowerQuery
    ThisWorkbook.Names.Add Name:="CurrentUser", _
        RefersTo:=LocalUsername


End Sub

当我进入 PowerQuery 并输入以下内容时

= Excel.Workbook(File.Contents("C:\Users\" & Excel.CurrentWorkbook()[Name="CurentUser"][Content]0[Column1] & "\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true)

我得到错误: Expression.Error:我们找不到名为“CurrentUser”的 Excel 表。 细节: 当前用户

有什么建议吗?

【问题讨论】:

【参考方案1】:

假设您可以将 Environ("username") 的值放入 abc 等命名范围,那么您可以在 powerquery 中使用

读取该命名范围
Excel.CurrentWorkbook()[Name="abc"][Content]0[Column1]

在你的代码中

= Excel.Workbook(File.Contents("C:\Users\" & Excel.CurrentWorkbook()[Name="abc"][Content]0[Column1] & "\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true)

【讨论】:

谢谢。我计划让 VBA 在打开文件时获取用户名并将其放入命名范围,然后使用命名范围对 powerquery 的源进行硬编码。令人兴奋。会让你知道进展如何 我试过了。我很接近,但它并不完全有效。我用我得到的错误更新了原始帖子中的代码。再次感谢。

以上是关于来自不同用户的位于 OneDrive 上的 Excel 工作簿的 Excel 查询的主要内容,如果未能解决你的问题,请参考以下文章

用户定义的运行时属性导致来自 xib 的 EXC_BAD_ACCESS

iOS 上的 Flutter 插件抛出错误“线程 1:EXC_BAD_ACCESS”

来自佳能 EDSDK EdsInitializeSDK() API 的 EXC_BAD_ACCESS

Cassandra 多个节点位于同一服务器上的不同数据中心

com.fasterxml.jackson.databind.exc.InvalidDefinitionException 对于用户实体上的一些 REST 操作

来自 Crashlytics 的 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 错误崩溃