如何防止Excel加载项文件将单元格引用更改为R1C1 /列到字母

我创build了Excel加载项文件( .xlam ),以便能够将我的macros分配给我的部门。 但是,当我在网上search答案时,我遇到了一个似乎无法find的问题。 当我添加和安装加载项文件到Excel(通过VBScript,如果有的话),它将Excel设置为R1C1模式,所以列编号,而不是字母。 任何想法可能导致这个? 是否可以在vbscript或Add-In文件中触发这个改变? 在部署Excel加载项之前,有没有人有过这种情况? 我如何防止它?

试着看看你是否改变了Application.ReferenceStyle = xlR1C1

如果没有,我会尝试插入

 Dim previousRefStyle previousRefStyle = Application.ReferenceStyle Application.ReferenceStyle = xlA1 

并在开始

 Application.ReferenceStyle = previousRefStyle 

所以用户将恢复原始设置

好吧,看来我从这个链接find了实际的解决scheme,在这个论坛上的post#10指向这个链接的提示2。

步骤如下:

  1. 退出Excel(添加加载项后)
  2. 单击开始>运行>inputExcel.exe /UnregServer
  3. 等待Excel完成再次打开
  4. 退出Excel(再次),
  5. 单击开始>运行>inputExcel.exe /RegServer

这是干净的(取消注册和重新注册)registry。 我希望这会节省一个人的search和论坛上网的时间,这让我终于绊倒了实际的解决scheme,而不仅仅是一个解决方法。

更新以包含VBScript实现示例:

为了使用VBScript来完成上述步骤(下面的脚本改编自这里 ),你可以使用类似这样的代码(当然,改变你的Excel.exe的path)

 Dim objFSO, objShell Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = WScript.CreateObject ("WScript.shell") objShell.Run "cmd /c ""C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"" /unregserver && timeout /t 3 && tskill excel && ""C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"" /regserver",1,True Set objFSO = Nothing Set objShell = Nothing x=msgbox("Excel registry refreshed." ,0, "Registry Update") wscript.quit 

免责声明:

正如@Rory在下面指出的那样(请参阅他评论中的链接),根据微软的文档,这些交换机不适用于2010年以前的版本。 虽然有很多人引用他们在2010年或更高版本中使用这种方法(我的评论见链接),但我想我只是想让读者知道这是Microsoft现在不支持的方法。 但是,如果它适合您和您的情况(因为许多微软不支持的function经常这样做),请随时使用它。