Office: Range-Namen ermitteln ?

Helfe beim Thema Range-Namen ermitteln ? in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe ein Excel Dokument, das automatisch von der Steuerung einer Produktionsmaschine erzeugt wird. Darin befindet sich im Prinzip... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von wmu, 27. Januar 2016.

  1. Range-Namen ermitteln ?


    Hallo zusammen,

    ich habe ein Excel Dokument, das automatisch von der Steuerung einer Produktionsmaschine erzeugt wird.

    Darin befindet sich im Prinzip ein Statusbericht über einen bestimmten Produktionszeitraum. Ich lese daraus mit einem Makro in einem zweiten Excel Dokument bestimmte Bereiche aus verschiedenen Tabellenblättern aus. Dabei gibt es leider ein Problem.

    Die Tabellenblätter haben immer denselben Namen. Innerhalb der Tabellenblätter befinden sich jeweils eingebundene Grafiken und Datentabellen. Ich lese nur die Datentabellen. Die Bereiche, in den diese Daten stehen, liegen nicht immer an derselben Stelle. Das heißt also, daß meine Nutzdaten im Bericht von heute z.B. im Range B50:F75 stehen, kann das im Bericht morgen genausogut B40:F45 sein. Lediglich die Anzahl der Spalten ist konstant und die Startspalte B
    Soweit ist das noch kein Problem, denn die erzeugende Software vergibt Namen für die betreffenden Bereiche, die ich dann mit Range("EinName").Select selektieren kann.

    Probleme gibt es aber mit den Namen an sich. Die in den verschiedenen Tabellenblättern benamten Bereiche heißen z.B. "Tabelle1" oder "DetailBereich2", "DetailBereich3" usw.
    Offensichtlich hat die ( nicht beeinflußbare ) Erzeugungssoftware eine gemeinsame Zählvariable für alle Namensobjekte. Wenn im Bericht dann nicht nur ein Bereich mit dem Namen "Tabelle..." vorkommt, sondern drei davon, heißen die "Tabelle1", "Tabelle2" und "Tabelle3"
    In diesem Fall werden aber auch die einzig für mich relevanten Bereiche "DetailBereich..." anders numeriert und heißen also "Detailbereich4", Detailbereich5" usw.

    Ich möchte also nach dem Öffnen der externen Datei zunächst feststellen, welche benamten Bereiche es im Dokument gibt und wie sie heißen. Dann könnte ich mich auf die Bereiche beziehen, deren Name mit "DetailBereich" beginnt.

    Das habe ich aber noch nicht hinbekommen. Hat dazu jemand eine Idee ?

    Ich hatte nach einem Vorschlag in einem anderen Forum versucht, die Daten mit ....Names.Count zu ermitteln.
    Leider funktioniert das wahrscheinlich nur dann, wenn die Bereiche in derselben Arbeitsmappe liegen, aus der auch das Makro ausgeführt wird.
    In meinem Fall öffne ich aber aus einem Excel Dokument eine zweite Datei, aus der ich dann die Daten in ein Tabellenblatt des ersten Dokumentes kopieren will.

    Gruß,
    Wolfgang

    Hier mein Source dazu. Ich habe darin die Namen der Quell- und Zielpfade verallgemeinert.

    Code:
    :)
     
  2. Beverly
    Beverly Erfahrener User
    Hi Wolfgang,

    die Namen aus der anderen Mappe kannst du nach diesem Prinzip feststellen:

    Code:
    Range-Namen ermitteln ? grusz.gif
     
    Beverly, 28. Januar 2016
    #2
  3. Hallo Karin,

    vielen Dank, aber irgendwie hakt es noch. Möglicherweise bin ich zu begriffstutzig. VBA ist allerdings auch nicht gerade mein Spezialgebiet.

    Ich habe dies in meinen Code eingefügt :

    Code:
    Beim Aufruf der For-Schleife bekomme ich den Laufzeitfehler 9 ("Index außerhalb des gültigen Bereiches")

    Auch der (hilflose )Versuch, auf die Mappe mit dem Bezug auf das bereits geöffnete File zu verweisen ...
    Code:
    ... geht mit Laufzeitfehler 13 ("Typen unverträglich") in die Hose.

    Langsam gehen mir alle Ideen aus *frown.gif*

    Gruß,
    Wolfgang
     
  4. Range-Namen ermitteln ?

    Hi wmu,

    schau Dir Karins Code mal genauer an. Da steht nicht!
    Code:
    sondern nur der Name der Mappe (also ohne Pfadangabe)...
     
  5. Hallo Wolfgang,

    Code:
    oSourceBook ist vom Typ Workbook (könntest / solltest Du auch so deklarieren) und Du weist der Variable ja das Workbook beim Öffnen zu. Du kannst das Workbook also direkt über diese Variable ansprechen, auch die enthaltenen Methoden und Eigenschaften.

    Code:
    Das wundert mich auch, kann ich aber ohne Kenntnis der Mappe nicht anders beurteilen. Mit meiner Testmappe funktioniert das, wie erwartet, einwandfrei.

    Code:
    Nach dem Öffnen ist das geöffnete das aktive Workbook.

    Und nimm mal Application.DisplayAlerts = False zu Beginn des Codes raus. Die Option sollte nur direkt vor dem Befehl genutzt werden, wo die Warnmeldungen deaktiviert werden sollen (was bereits einer genauen Überlegung bedarf) und danach sofort wieder rückgängig gemacht werden. Niemalsnie pauschal und global für das gesamte Makro deaktivieren!

    Grüße
    EarlFred
     
    EarlFred, 29. Januar 2016
    #5
  6. Vielen Dank auch Euch beiden !

    Ich hatte zwischenzeitlich über die Dokumentation zum Workbook Objekt auch herausbekommen, daß es sich hier nicht um eine Dateiangabe incl. Pfad handelt.

    Ich hatte dann versuchsweise den Code mal so geändert :

    Code:
    Das ergibt immerhin schon mal keinen Laufzeitfehler mehr. Allerdings liefert
    Anzahl = Workbooks(w.Name).Names.Count
    eine Enttäuschung, denn Anzahl ist 0

    Ich habe mich vergewissert, daß es in dieser Arbeitsmappe tatsächlich Bereiche mit Namen gibt. ( Abgesehen davon, daß es ja funktioniert, wenn ich die Namen explizit richtig angebe )
    Ich habe in der Datei mal über -> Formeln -> Namensmanager nachgesehen. Da stehen dann die Bereichsnamen. Ich suche also in der falschen Struktur. Finde ich die Namen wirklich auf Workbook-Ebene oder muß ich erst herausfinden, wie die Tabellenblätter heißen und darin nach den Namen suchen ?

    Gruß,
    Wolfgang
     
  7. Beverly
    Beverly Erfahrener User
    Hi Wolfgang,

    Namen werden auf Workbook-Ebene gefunden, auch wenn sie sich nur auf einzelne Tabellen beziehen - in dem Fall steht dann noch der Tabellenname davor.

    Sind im Namensmanager die Bereiche unter "Bezieht sich auf" eventuell ausgegraut? Dann sind es (z.B.) als Tabelle formatierte Bereiche und diese werden nicht als Namen erkannt, obwohl sie unter den definierten Namen aufgelistet sind.


    Range-Namen ermitteln ? grusz.gif
     
    Beverly, 29. Januar 2016
    #7
  8. Range-Namen ermitteln ?

    Hallo Karin,

    genauso ist es. Die Liste der Bereiche enthält alle Angaben, auch Ort und Parameter der einzelnen Bereiche, aber die Werte im Feld "Bezieht sich auf ... " unten im Fenster sind jeweils ausgegraut.

    Und nu ? Kann ich nur blöd aus der Wäsche gucken ?
    Irgendwie muß ich doch an diese vermaledeiten Namen kommen *mad.gif*

    Gruß,
    Wolfgang
     
  9. Eine mögliche Alternative wäre ja, zu probieren, ob es einen bestimmten Bereichsnamen gibt.
    Die Bereichsnamen, die mich interessieren, beginnen auf jeden Fall mit "Detailbereich..." . Einzig die Benummerung beginnt mal mit 1, mal mit 2 oder auch 3. Ich weiß auch, daß es nur 4 oder 5 Bereiche sein können.
    Bereiche mit anderen Namen sind nicht relevant.

    Dann könnte ich doch testhalber mal in einer Schleife versuchen, die Bereiche "Detailbereich1" bis "Detailbereich10" zu selektieren.
    Dort wo es funktioniert ist es gut, die anderen lasse ich weg. Das ist nicht die eleganteste Methode, aber der Zweck heiligt die Mittel. Ich möchte da nicht noch mehr Zeit hineinstecken.
    Könnte mir jemand einen Tip zur Realisierung geben ?
    in Delphi würde ich so etwas mit Try ... except ... machen. Gibt es sowas in VBA auch ?

    Gruß,
    Wolfgang
     
  10. ... ups, gerade gesehen :

    Code:
    Das probiere ich mal aus.

    Gruß,
    Wolfgang
     
  11. Hallo Wolfgang,

    Try/Catch suchst Du in VBA vergebens. Da müsstest Du andere Konstrukte basteln.

    For Each namName In oSourceBook.Names, wie ich vorgeschlagen habe, sollte auch keinen Laufzeitfehler ergeben.


    Was ist denn Ziel der Übung? Auf die Tabellen zuzugreifen? Dafür gibt es doch das ListObject!

    Code:
    Die Daten stehen z. B. im DataBodyRange - einfach mal in der OH nach ListObject suchen.

    Grüße
    EarlFred
     
    EarlFred, 29. Januar 2016
    #11
  12. Hallo EarlFred,

    das war der entscheidende Tip. Tatsächlich stehen in diesen Objekten die Namen, die ich suchte. Ich lese die einfach in ein String-Array und kann sie in der For Linie = 1 To 4 Schleife mit den Index Linie einfach verwenden.
    Jetzt rennt es. Vielen Dank allen, die mir hier aufs Pferd geholfen haben !*Smilie *Smilie

    Gruß,
    Wolfgang
     
Thema:

Range-Namen ermitteln ?

Die Seite wird geladen...
  1. Range-Namen ermitteln ? - Similar Threads - Range Namen ermitteln

  2. Excel Range als Bild in Word einfügen

    in Microsoft Excel Hilfe
    Excel Range als Bild in Word einfügen: Hallo, ich möchte gerne per Makro in einem Wordtemplate Mustergrafiken, die als Platzhalter dienen durch Bereiche in meiner Exceldatei ersetzen, die ich als Bild einfüge. Per Hand mache ich das...
  3. SVERWEIS mit Range von bis funktioniert nicht?

    in Microsoft Excel Hilfe
    SVERWEIS mit Range von bis funktioniert nicht?: Hallo, ich komme leider nicht weiter bei meinem SVERWEIS. Spalte A und C werden ausgefüllt. In Spalte B sollte dann der SVERWEIS sein. Leider komm ich mit "von bis" nicht weiter und jedes...
  4. Macro Fehler Subscript out of Range

    in Microsoft Excel Hilfe
    Macro Fehler Subscript out of Range: Hallo Zusammen, ich muesste aus ca. 500 pdf's mit teilweise 90 oder evtl. sogar mehr Seiten, ein paar Daten auslesen. Ich habe ein Makro, dass ich vor Jahren benutzt habe, mit dem ich erst die...
  5. Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".

    in Microsoft Excel Hilfe
    Laufzeitfehler 1004 "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen".: Hallo Leute,*:)* nachdem ich in die "addIn 1.2.4" ein Sheet RKL eine Dropdownliste und ein Togglebutton hinzugefügt habe bekomme ich beim aufruf der UF die Fehlermeldung "Laufzeitfehler 1004 "Die...
  6. 2x Worksheet_Change(ByVal Target As Range)

    in Microsoft Excel Hilfe
    2x Worksheet_Change(ByVal Target As Range): Hallo zusammen, ich bin VBA-Anfänger und habe die ersten Codes erstellt. Nun möchte ich 2 von Ihnen, welche einzeln funktionieren, zusammenfügen, so dass beide entsprechend durchgeführt werden....
  7. VLookup mit Range Name in Makro

    in Microsoft Excel Hilfe
    VLookup mit Range Name in Makro: Hallo zusammen, ich würde gerne mein Makro so verändern, dass ich auch nach einfügen von Spalten das Makro nicht ändern muss. Bei anderen Formeln habe ich es per Range Names gelöst. Jetzt...
  8. Flexible/Erweiterbare Name (named range)?

    in Microsoft Excel Hilfe
    Flexible/Erweiterbare Name (named range)?: Hallo Für einen flexiblen Namensbereich/named range benutze ich in meiner Tabelle für den Artikel folgende Formel: =BEREICH.VERSCHIEBEN(Tabelle1!$A$2;;;ANZAHL2(Tabelle1!$A:$A)-1;1) Was...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden