2012-12-18 12 views
5

Doğru şekilde yüklenen bir excel eklentisi hazırladık ve yalnızca Excel'i ana simgeden (veya boş bir çalışma kitabından) açarken görünecek. Mevcut herhangi bir kayıtlı excel belgesini açarken araç çubuğunda görünmez.My Excel 2010 Add yalnızca boş bir çalışma kitabını açarken görünür. Varolan belgeyi açarken görünmeyecek

Varolan bir belgeyi açarken, -> seçenekler -> dosya altında, COM eklentilerinde doğru şekilde işaretlendiğinden emin oldum. Eklememizi kullanmamız için boş bir çalışma kitabı açmalı ve mevcut dosyamızı boş çalışma kitabına sürüklemeliyiz.

Neden herkesin sadece boş bir çalışma kitabında ve varolan .xlsx dosyalarında şeritte görüneceği hakkında bir fikriniz olur mu?

Boş bir çalışma kitabını açtığım, eklentinin şeritte olduğunu onayladığı, bir metni bir hücreye koyduğumu, masaüstüme kaydettiğimi, kapattığını ve yeniden açtığım bir sınamayı bile çalıştırdım. O zaman gösterilmez. Bu eklenti VS2010 ile yapıldı. İşte

İşte
public partial class ThisAddIn 
{ 
    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
    } 

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
    { 
    } 

    #region VSTO generated code 

    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    private void InternalStartup() 
    { 
     this.Startup += new System.EventHandler(ThisAddIn_Startup); 
     this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); 
    } 

    #endregion 
} 

Yaptığımız ... birkaç alanları doldurma ve kurulumu yapılıyor yaptığını bütün Ribbon.cs dosyasından kodudur "ThisAddIn.cs" dan kodudur:

private void MyRibbon_Load(object sender, RibbonUIEventArgs e) 
{ 

    Excel._Workbook activeWorkbook = (Excel._Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; 
    if (activeWorkbook.Path == "") 
    { 
    string pathMyDocuments = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); 
    this.editBox1.Text = pathMyDocuments; 
    } 
    else 
    { 
    this.editBox1.Text = activeWorkbook.Path; 
    this.fileBox.Text = "Converted_" + activeWorkbook.Name; 
    } 

    this.folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.MyComputer; 
    this.folderBrowserDialog1.ShowNewFolderButton = true; 

    //populate the dropdown box with spreadsheet templates 
    using (SqlConnection conn = new SqlConnection("<removed for stack overflow>")) 
    { 
    using (SqlCommand command = new SqlCommand("<sql command text removed for SO", conn)) 
    { 
     command.CommandType = CommandType.Text; 

     conn.Open(); 
     SqlDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
     RibbonDropDownItem item = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem(); 
     item.Label = reader["MasterSpreadsheetName"].ToString(); 
     ddlSpreadsheetTemplate.Items.Add(item); 
     } 
    } 
    } 
} 
+0

, addin starup'ın kodu da dahil olmak üzere yararlı olabilir – Sorceri

+0

ThisAddIn.cs dosyasının "ThisAddIn_Startup" veya "ThisAddIn_Shutdown" öğesinde hiçbir şey yoktur, ancak Yukarıdaki düzenlemede. – blapsley

+0

Varolan bir belgeyi açın, Dosya> Seçenekler> Eklentiler bölümüne gidin. Eklentinizin etkin mi yoksa aktif mi olduğunu görün. – Keith

cevap

0

Geç cevap için özür dileriz, ancak bu çok yaygın bir sorundur, bu yüzden yine de cevaplayacağım. Ben kendim birkaç kez karşılaştım ve benim addin kod ile ilgisi yoktu. Sorun, gezginde önizleme bölmesinde oldu. enter image description here Explorer'daki excel dosyanızı seçtiğinizde, önizleme için Excel örneğini başlatır. Ve sonra dosyanızı gerçek Excel'de açarsınız, Excel'deki bazı hatalar tüm eklentilerin yüklenmesini engeller. Eklentiniz bile herhangi bir kod başlatmayacak, böylece eklentinizin içinden hiçbir şey yapamazsınız. Tek yol excel dosyaları ile önizleme kullanmak değildir. Ve daha da kötüsü, bir dosya önizlemesi yapıldıktan sonra, Excel işlemi hala bellekte kalıyor, bu yüzden eklentiler görev yöneticisi tarafından öldürene kadar çalışmayacak. Bu hata 2007, 2010, 1013 ve belki de 2016 için geçerlidir.

İlgili konular