2017-01-25 45 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

相關問題