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

时间:2016-02-23 14:06:55

标签: excel vba excel-vba vbscript add-in

我创建了一个Excel加载项文件(.xlam),以便能够将我的宏分发给我的部门。但是,当我在网上搜索答案时,我遇到了一个似乎无法找到的问题。当我向Excel添加并安装加载项文件时(通过vbscript,如果这很重要),它将Excel设置为R1C1模式,因此列编号而不是字母。知道可能导致这种情况的原因吗?它可以在vbscript或Add-In文件中触发此更改吗?在部署Excel加载项之前,有没有人遇到过这种情况?我该如何预防?

2 个答案:

答案 0 :(得分:4)

尝试查看您是否更改了Application.ReferenceStyle = xlR1C1

如果没有,我会尝试插入

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

并在开始

Application.ReferenceStyle = previousRefStyle

因此用户将恢复原始设置

答案 1 :(得分:1)

好的,似乎我找到了来自this link实际解决方案,该论坛帖子中的帖子#10指向this link中的提示2。

步骤如下:

  1. 退出Excel(添加加载项后)
  2. 点击开始>运行>输入Excel.exe /UnregServer
  3. 等待Excel再次完成打开
  4. 退出Excel(再次),
  5. 点击开始>运行>输入Excel.exe /RegServer
  6. 这样做是为了清理(取消注册和重新注册)注册表。我希望这甚至可以节省一个人谷歌搜索和论坛冲浪的时间,这让我最终偶然发现实际的解决方案,而不仅仅是一种解决方法。

    更新以包含VBScript实施示例:

    要使用VBScript完成上述步骤(以下脚本改编自here),您可以使用与此类似的代码(当然,更改您的Excel.exe路径)

    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常用功能)可以随意使用它。