2017-01-25 46 views
0

在打开一个宏的项目启动Excel文件,我得到如下:错误 - 使用相同的密钥已被添加

运行时错误“-2147024809(80070057)”:一个与项目相同的密钥已被添加。

我见过很多其他语言的类似问题,但VBA没有。我确实在VBA上发现了一个在线的东西,但它说它与Scripting.Dictionary库有关。

但是,我没有提及MS脚本运行时,也没有绑定到它,并且我没有字典或数组或此文件中的任何类型。我能想到的唯一的事情是我有一个小型的用户窗体,它只是一个进度栏。该用户窗体中的每个项目都是唯一命名的,并且它们都不是应该被系统保留或使用的单词。

有没有人遇到过这个问题或者有什么想法?

编辑:

好了,奇怪的事情发生了......我关了2个其他VBA项目(插件),这些在VBE打开,打开我的文件之前,错误没”来吧。这两个其他文件已被打开,我一直在这个文件上工作...

然后,我完全关闭Excel ...其他2个文件打开,并打开我的文件没有错误。我不知道......

更新:

刚刚得到了同样的错误打开不同的文件。如果我的问题还不够清楚......有人知道这个错误可能与什么有关,或者如何阻止它?

+0

你可以通过单击调试并单步执行代码来查看错误产生的位置吗? –

+0

不,它运行良好,错误只在打开文件时出现......并且它什么也没有亮。 – Rdster

+0

我在Excel 2016中遇到了同样的错误。关闭所有打开的实例后重新启动Excel。 – ChrisB

回答

1

这看起来像是一个Scripting.Dictionary错误,但事实上下面的代码会抛出一个错误代码457,它与您的代码不同,并且字典的错误消息也不同。此键已与此集合的元素关联“这可以用代码来验证

Option Explicit 

Sub Tst() 
    On Error Resume Next 
    Dim dic As New Scripting.Dictionary 
    dic.Add 1, 0 
    dic.Add 1, 0 
    Debug.Print Err.Number, Err.Description 
End Sub 

因此,这不是你的VBA代码,恕我直言,但它看起来有点像一个C#的错误,我们可以用一些代码验证这一点,打开在Visual Studio中的Windows窗体C#项目然后将Form1_Load编辑为以下内容

using System; 
using System.Collections.Generic; 
using System.Windows.Forms; 

namespace WindowsFormsApplication3 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       Dictionary<long, long> dicTest = new Dictionary<long, long>(); 
       dicTest.Add(1, 0); 
       dicTest.Add(1, 0); 
      } 
      catch (Exception ex) { 
       System.Windows.Forms.MessageBox.Show(string.Format("{0} {1}", ex.HResult, ex.Message)); 
      } 
     } 
    } 
} 

并且这会抛出带有您报告的错误号和消息的消息框。因此,它是一个C#字典错误恕我直言,并注意我们如何用try catch块捕获它,而我认为你有C#代码没有捕获错误。

所以接下来的问题是哪个工作簿负责。我会建议您在使用Application.EnableEvents = False的实验中关闭事件处理,以便用任何语言VBA,C#,VB,NET编写的事件处理程序都不会运行。然后,您可以手动运行工作簿的初始化例程,如果没有错误发生您的工作簿无罪,而其他工作簿/插件必须有罪,您将错误报告给作者。

我希望你在这方面取得进展。没有反馈就很难做到这一点。

+0

我可以在没有_Open事件的情况下启动工作簿,但仍然会出现错误,而且不会发生只有一个工作簿。我倾向于认为这个错误是由于一个加载项引起的。我会尝试删除它们,并查看在接下来的几天内我会收到哪些错误,以查看是否可以缩小它的范围。感谢您的研究......我仅限于此系统上的VBA,不支持Visual Studio。 – Rdster

相关问题