小编Enr*_*ico的帖子

Excel:需要从VBA宏加载Power Query加载项

该方案是Windows Server 2012 R2,64位; Excel 2010,32位.许多用户,只有其中几个拥有管理权限.我从内置管理员安装了Power Query.没有询问任何内容,为所有用户安装了加载项; 我的意思是它的设置可以在HKLM下的注册表项中找到,而不是HKCU.

关键是

HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Office -> Excel -> AddIns -> Microsoft.Mashup.Client.Excel

而相关的价值是

LoadBehavior (REG_DWORD)

现在只有少数用户真的需要Power Query.每次启动Excel时,我都不希望它为每个人加载.我为LoadBehavior值尝试了一些不同的设置(请参阅链接).我找到了以下内容:

  • 如果LoadBehavior = 2,则不会为任何用户加载加载项.
  • 如果LoadBehavior = 3,则为所有用户加载加载项.但是,如果我为特定用户(在注册表中)创建特定密钥,则用户可以从Excel禁用该加载项.例如,在HKEY_CURRENT_USER中,密钥的路径是:

软件 - > Microsoft - > Office - > Excel - > Addins - > -Microsoft.Mashup.Client.Excel

  • 更具体地说,将用户密钥放入LoadBehavior值就足够了,这允许用户决定是否要加载加载项.值3表示"加载",值2表示"无负载".
  • 我需要恰恰相反:加载项通常不加载,一些用户允许加载它.我发现可以将HKLM中的LoadBehavior设置为9.这意味着"按需加载".即,仅当用户需要操作时才加载加载项,具体取决于加载项本身.对我来说很好.
  • 此时,我可能会忽略特定用户的密钥(例如,在HKCU中).但是,我发现如果我创建它,它优先于HKLM(当后者具有LoadBehavior = 9时).因此,对于特定用户,可以决定在"始终加载"模式下使用加载项.只需在HKCU下的密钥中设置LoadBehavior = 3即可.

这一切似乎都很好.现在问题是我需要从VBA过程调用一些Power Query操作.如果已加载Power Query,则一切正常.但如果未加载,即使使用"按需加载"设置,操作也会失败.为了加载Power Query,必须按下Excel GUI上的某个按钮,该按钮调用Power Query操作.

我发现VBA中有一个加载项对象的属性,它指示加载项是否已加载,并且可以设置为从VBA加载或卸载加载项.它是:

Application.COMAddIns.Item("Microsoft.Mashup.Client.Excel").Connect

如果是True,则加载加载项,如果加载,则加载加载False项.

现在应该可以通过将此属性设置为True来加载加载项.但是,在我的方案中情况并非如此:结果是错误(80004005).这似乎是与没有管理权限的用户相关的问题.查看页面 - 此行为被视为错误.

我将在稍后尝试的最后一个想法是完全删除HKLM下的密钥中的LoadBehavior.我已经检查过这会阻止用户看到加载项,除非创建了特定于用户的密钥,在这种情况下,用户可以自动设置加载项加载行为.我将看到在这种情况下从VBA请求加载时会发生什么.

同时,我很感激任何想法来解决这个问题:Power …

excel vba excel-addins powerquery

10
推荐指数
1
解决办法
639
查看次数

撤消 Git 中的本地更改

我的情况:我克隆了一个存储库(内核的源文件)。然后检查一个分支,并构建内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。

特别是,我认为这个答案很有用。在我看来,最好的方法是

git checkout -f <desired branch of the original cloned repository>
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,这应该强制结帐,丢弃本地更改(如果我错了,请纠正我)。Git 已成功签出,但我仍然在工作树的同一子文件夹中找到之前构建的二进制文件。

git

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

excel ×1

excel-addins ×1

git ×1

powerquery ×1

vba ×1