none
Excel 2010 Bereichsnamen erzeugen Fehler: #Name RRS feed

  • Frage

  • Hallo liebe Microsoft-Community,

    ich habe seit einigen Wochen das Problem, dass nach dem Öffnen meiner Excel-Tabellen aus meinen COM-Add-In nicht alle Bereichsnamen in der Excel-Tabelle richtig aufgelöst werden.

    Viele Zellen in der Excel-Tabelle besitzen einen Namen, um den Datentransfer in andere Excel-Tabelle zu realisieren, bzw. die Daten in einen Worddokument über Textmarken einzulesen. Diese Vorgehensweise wird seit ca. 1995 problemlos angewendet.

    Das COM-Add-In für Excel wurde in VSTO 2010 (2013) mit der Programmiersprache C#  und der Projektvorlage Excel 2010-Add-In erstellt. Seit einigen Wochen habe ich das Problem, das in einigen Excel-Tabellen nicht alle Bereichsnamen richtig aufgelöst werden.  Dieses Problem tritt nur auf, wenn die Excel-Tabelle aus den COM-Add-In geöffnet wurde.

    In der unteren Bild habe ich ein Beispiel dafür hinterlegt.

    Für die folgenden drei Zellen werden folgende Bereichsnamen verwendet:

    -       Adresse: N6; Bereichsname: vvj1_getr; Wert: 26.402.20

    -       Adresse: O6; Bereichsname: vj1_getr; Wert: 116.580,37

    -       Adresse: P6; Bereichsname: gsj1_getr; Wert: 66.276.28

    In den Tabellenspalten R und S habe ich folgende Formeln eingetragen:

    -       Adresse: R6; Formel: =+vvj1_getr  à Wert: 26.402.20

    -       Adresse: S6; Formel: =+vj1_getr  à Wert: 116.580,37

    -       Adresse: R7; Formel: =+gsj1_getr  à Wert: #Name

      Fehler

    Der Zellbezug  in der Zelle R7 wird nicht richtig aufgelöst und mit den Wert #Name als Fehler ausgewiesen. Das betrifft alle Bereichsnamen die sich auf den Zellen in der Spalte K, L und P beziehen.

    Dieser Fehler tritt nur sporadisch auf. Wird die Excel-Tabelle mit diesem Fehler gespeichert, so tritt dieser Fehler nach jedem Öffnen der Excel-Tabelle über das COM-Add-In auf.<o:p></o:p>


    Wird die Excel-Tabelle dagegen aus dem Explorer geöffnet, so werden alle Bereichsnamen richtig aufgelöst.

    Normale Auflösung der bereichsnamen

    Das COM-Add-In ist wie folgt signiert:

    -       ClickOnce-Manifest: mit einen Zertifikat der Unternehmenszertifizierungsstelle und

    -       Assembly mit einer Schlüsseldatei mit starken Namen.

    Im COM-Add-In werden die Tabellen mit folgenden Code geöffnet:

    public static bool LadeExcelDatei1(Excel._Application objApp, string exlFileName, bool readOnly, Excel.XlUpdateLinks updateLinks)

    {

      bool geladen = true;

      try

      { objApp.Workbooks.Open(Filename: exlFileName, ReadOnly: readOnly, UpdateLinks: updateLinks); }

      catch (COMException cex)

      {

        Allgemein.MeldungsFenster("Fehler beim Öffnen der Datei " + exlFileName + "!"

    + Konstanten.ccrlf + cex.Message, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        geladen = false;

      }

      return geladen;

    }

    Was kann die Ursache für diesen Fehler sein und wie kann ich diesen Fehler beseitigen?

    Ich bin für über jeden Tipp und Ratschlag sehr dankbar.

    Vielen Dank

    Ralf

    Montag, 10. Juli 2017 16:13

Alle Antworten

  • Hallo Ralf,

    das ist schwierig aus der Ferne zu beurteilen.

    Hast Du mal die Problemstelle extrahiert?

    Also eine separates Exceldokument ín dem nur der betreffende Bereichsname steht. Tritt dann der gleiche Fehler auf?

    Was steht den in dem Bereichsnahmen, wahrscheinlich Formeln?

    Im zweiten Schritt würde ich in die Zelle des Bereichsnamens einmal einen festen Wert eintragen, damit könnte man herausfinden ob es an dem Bereichsnamen oder der Formel hinter dem Bereichsnamen liegt.

    Falls die dahinterliegende Formel nicht zu groß ist und keine vertrauliche Daten beinhaltet, kannst Du diese ja auch einmal hier einstellen.

    Grüße

    Roland

    Dienstag, 11. Juli 2017 06:25
  • Hallo Roland,

    vielen Dank für Deine Hinweise.

    Die Excel-Tabelle um die es sich handelt, ist Bestanteil eines Prüfungsprogrammes. In dieser wird der Jahresabschluss eines Unternehmens dargestellt und sie enthält mehrere Checklisten für die Prüfung. Wird eine Prüfung angelegt, so wird diese aus einen Vorlageverzeichnis in das entsprechende Arbeitsverzeichnis kopiert. Wir haben über Jahre hinweg keine Probleme mit dieser Excel-Tabelle gehabt.  Das von mir beschriebene Problem  tritt sporadisch auf. Ist die Excel-Tabelle einmal mit dem Problem behaftet, so lässt es sich nicht beseitigen. Ich habe auch schon versucht, über C# die betroffenen Namen neu anzulegen, das hat aber nicht immer das Problem gelöst. 

    Als das Problem das erste Mal auftrat, vermutete ich, es liegt an der Excel-Installation. Das war nicht der Fall. Eine Neuinstallation von Excel sowie der Tausch des PC hat das Problem nicht beseitigt.

    Was vor allem sehr merkwürdig ist,  dass wenn das Problem auftritt, nicht alle Bereichsnamen davon betroffen sind.

    Im Namens-Manager von Excel ist  für den betroffenen Namen folgendes eingetragen:

    Name:                 gsj1_getr

    Bereich:               GUV

    Formel:                =GUV!$P$16

    Die Nachbarzelle hat folgenden Bereichsnamen und funktioniert:

    Name:                 vj1_getr

    Bereich:               GUV

    Formel:                =GUV!$O$16

    Versuche ich den Namen gsj1_getr  über den Formel-Manger zu löschen,  so wird er aus der Liste des  Formel-Mangers entfernt. Rufe ich den Formel-Manger erneut auf, so befindet sich der Bereichsname wieder in der Liste. Alle anderen Bereichsnamen,  die korrekt aufgelöst und mit den betreffenden  Zellwerten in den Formeln angezeigt werden, kann ich löschen.

    Lege ich den Namen gsj1_getr in einer Neuen Excel-Tabelle mit der gleichen Position an, so wird der Name korrekt aufgelöst.

    Ich habe in der Excel-Tabelle ca. 6079 Namen. Habe ich dort schon ein Limit überschritten?

    Kann  es sein, das hier Servereinstellung wirken, die defekt sind?

    Merkwürdig ist auch, wenn die betroffene Excel-Tabelle aus den Windows-Explorer oder Excel geöffnet wird,  so werden alle Zellbezüge korrekt dargestellt. Öffne ich die Excel-Tabelle über mein COM-Add-In und ist die Tabelle von diesem Fehler betroffen, so tritt dieser Fehler auf.  Kann es sich dabei auch um einen Bug in den Bibliotheken von Framework 4.0 handeln? Wenn ja, wer kann mir dort weiterhelfen?

    Mit freundlichen Grüßen

    Ralf

    Mittwoch, 12. Juli 2017 17:34
  • Hallo Ralf,

    haben die Namen beziehungsweise die Bereich in denen der Fehler Auftritt irgend welche Gemeinsamkeiten?

    Oder tritt das Problem einmal bei "A" und nicht bei"B" auf das nächste mal genau umgekehrt bei "B" und nicht bei "A" auf?

    Hast Du mal geprüft, ob gleiche Namen mehrfach im Namens-Manager auftauchen ?

    Da das ganze nur im Add-In auftritt, würde ich das Öffnen der Mappe einmal verändern z.B. in einem normalen .Net-Programm, also eine  Konsolenanwendung, Forms, WPF etc.

    Grüße

    Roland

    Donnerstag, 13. Juli 2017 06:04
  • Hallo Roland,

    vielen Dank für Deine Hinweise. Ich kann die Zellen mit den betroffenen Bereichsnamen auch verschieben. Dabei wird die Formel für den Zellbezug auch korrekt verändert. Das Problem bleibt auch weiterhin bestehen (zum Beispiel: Zelle mit den Namen gsj1_getr von P16 nach O15 verschoben).

    Heute habe ich ein COM-Add-In geschrieben, wo die betreffende Excel-Tabelle nur geladen wird.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)

    {

       Excel._Application objApp = (Excel._Application)Globals.ThisAddIn.Application;

       string exlFileName = "C:\\aktuell\\2016\\VS792116.300\\tab250.xlsm";

       bool readOnly = false;

       Excel.XlUpdateLinks updateLinks = Excel.XlUpdateLinks.xlUpdateLinksAlways;

       objApp.Workbooks.Open(Filename: exlFileName, ReadOnly: readOnly, UpdateLinks: updateLinks);

    }

    Mit diesem Code werden auch die betroffenen Excel-Tabellen korrekt dargestellt.

    In meinen COM-Add-In hatte ich auch eine Access-Datenbank. Diese habe ich vor ca. 2 Monaten auf eine XML-Datenbank umgestellt. Dort nutze ich das XmlDocument. Seit dieser Zeit  tritt sporadisch diese Problem auf. Vielleicht gibt es eine Unverträglichkeit zwischen den Bibliotheken.

    Mit freundlichen Grüßen

    Ralf

    XmlDocument

    XmlDocument


    • Bearbeitet Giring Donnerstag, 13. Juli 2017 07:44 Korrektur
    Donnerstag, 13. Juli 2017 07:34
  • damit bleibt jetzt nur noch im Add-In den Fehler zu suchen. Ich würde, falls das möglich ist, zunächst so viel wie möglich außer dem Öffnen der Excel-Mappe auskommentieren.

    Wenn der Fehler dann nicht mehr auftritt,  wieder schrittweise das Auskommentieren zurück nehmen.

    Das kann zwar aufwendig werden, ich sehe aber keine andere Möglichkeit.

    Viel Erfolg und Grüße

    Roland

    Donnerstag, 13. Juli 2017 11:55
  • Hallo Roland,

    bin leider erst jetzt wieder dazu gekommen, mich mit dem Problem zu beschäftigen. Ich musste feststellen, dass selbst mit dem am 13.07.2017 dargestellten Programm-Code die Excel-Tabelle nicht richtig dargestellt wird, d.h. es liegt offensichtlich nicht an meinen Programmcode.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)

    {

           Excel._Application objApp = (Excel._Application)Globals.ThisAddIn.Application;

           string exlFileName = "C:\\aktuell\\2016\\VS792116.300\\tab250.xlsm";

           bool readOnly = false;

           Excel.XlUpdateLinks updateLinks = Excel.XlUpdateLinks.xlUpdateLinksAlways;

           objApp.Workbooks.Open(Filename: exlFileName, ReadOnly: readOnly, UpdateLinks: updateLinks);

    }

    Auch das Wechseln der Ressource vom Zielframework: von 4.0 auf 4.5 brachte keine Verbesserung. Danach habe ich die betreffende Datei als Binärdatei abgespeichert.

    Als ich die neue Datei mit den oben dargestellten Code (string exlFileName = "C:\\aktuell\\2016\\VS792116.300\\tab250.xlsb";) geöffnet habe, wurde die Tabelle korrekt dargestellt. Der Fehler trat erst wieder auf, wenn ich eine bestehende Formel, die sich auf die Spalte P bezieht, bearbeitet habe.

    Habe ich die Excel-Tabelle aus den Explorer geöffnet, so wurde alles korrekt dargestellt. Auch das Anlegen neuer Formeln mit den betroffenen Bereichsnamen verursachte keine Probleme.

    Offensichtlich, tritt der Fehler nur in den betroffenen Excel-Tabellen auf. Es scheint so, als ob es in den betroffenen Excel-Tabellen ein Eintrag geben muss, der die Auflösung von Bereichsnamen beschränkt, wenn die Excel-Tabelle aus einen COM-Add-In, welches die Ressource vom Net-Framework nutzt, geöffnet wird.

    Hat jemand ein Idee, wie man am besten dieses Problem lösen kann.

    Mit freundlichen Grüßen

    Ralf

    Dienstag, 15. August 2017 12:18
  • Hallo zusammen,

    wurde das Problem behoben ? Ich habe das gleiche Problem und kann dies nachvollziehen. D.h., wenn die Tabelle über .NET geöffnet wird, werden verschiedene Bereichsnamen nicht aufgelöst. Sofern ich die Tabelle dann über den Explorer öffne, werden alle Bereichsname ordentlich umgesetzt. Ich denke, dass sich dieses Thema jemand aus der Programmierabteilung anschauen muss, um dieses Problem zu beheben.

    Mit freundlichen Grüßen

    D. Wagner

    Montag, 26. November 2018 21:01