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

来自不同用户的OneDrive上Excel工作簿的Excel查询,excel,vba,sharepoint,powerquery,Excel,Vba,Sharepoint,Powerquery,朋友们 我目前正在使用以下来源将数据从OneDrive中的excel文件拉入电子表格 = Excel.Workbook(File.Contents("C:\Users\Bob Saggat\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true) 我使用以下代码成功地将数据从VBA模块中的OneDrive文件夹发布到具有不同用户的文件中,代码如下: Workbooks.Open(

朋友们

我目前正在使用以下来源将数据从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")
我希望在代码中的powerquery编辑器中使用Environ(“username”),文件的源代码才能正常工作

= Excel.Workbook(File.Contents("C:\Users\" & Environ("username") & "\OneDrive - USS Enterprise\Prototype\InvestorsMasterProto.xlsm"), null, true)
执行此操作时,会出现以下错误:Expression.error:无法识别名称“Environ”。确保拼写正确。

这里的解决方案是什么

一些谷歌员工建议我将文件托管在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)
我得到一个错误: 表达式。错误:找不到名为“CurrentUser”的Excel表。 细节: 当前用户


有什么建议吗?

假设您可以将Environ(“用户名”)的值放入一个命名范围,例如abc,那么您可以使用

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的源代码。令人兴奋的我会让你知道我是怎么尝试的。我很接近,但不太奏效。我用收到的错误更新了原始帖子中的代码。再次感谢。