Tabelle per Codename auswählen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Tabelle per Codename auswählen
von: PeTeR
Geschrieben am: 07.10.2015 15:36:23

Hallo VBA-Freaks,
ich habe eine Datei "A.xlsx" und darin ein Tabellenblatt "Tabelle1" mit dem Codenamen "Auftrag". Nun öffne ich per Makro die Datei "A.xlsx" und möchte das Tabellenblatt "Auftrag" per Codename auswählen:
Workbooks.Open Filename:="...\A.xlsx" - funzt
Auftrag.Activate - FUNZT NICHT
Worksheets("Tabelle1").Activate - funzt, will ich aber nicht, weil zu gefährlich.
Wie macht man das denn???
Vielen Dank für euer Anregungen
PeTeR

Bild

Betrifft: AW: Tabelle per Codename auswählen
von: Nepumuk
Geschrieben am: 07.10.2015 16:19:06
Hallo,
ich hab das so gelöst (arbeite auch ausschließlich mit dem Codenamen):

Option Explicit

Public Sub Test()
    Dim objWorkbook As Workbook, objWorksheet As Worksheet
    Set objWorkbook = Workbooks.Open(Filename:="...\A.xlsx") ' - funzt
    Set objWorksheet = GetSheetNameByCodeName(objWorkbook, "Auftrag")
    If Not objWorksheet Is Nothing Then
        objWorksheet.Activate
    Else
        Call MsgBox("Tabelle nicht gefunden.", vbCritical, "Panic !!!!!")
        Exit Sub
    End If
    
    'weiterer Code
    
    Set objWorksheet = Nothing
    Set objWorkbook = Nothing
End Sub

Public Function GetSheetNameByCodeName( _
        ByRef probjWorkbook As Workbook, _
        ByVal pvstrCodeName As String) As Object

    
    Dim objSheet As Object
    
    For Each objSheet In probjWorkbook.Sheets
        
        If objSheet.CodeName = pvstrCodeName Then
            
            Set GetSheetNameByCodeName = objSheet
            Set objSheet = Nothing
            Exit For
            
        End If
    Next
End Function

Gruß
Nepumuk

Bild

Betrifft: If ActiveWorkbook.Worksheets(x).CodeName ...
von: Matthias L
Geschrieben am: 07.10.2015 16:25:07
Hallo
Dim x&
Workbooks.Open Filename:="C:\...\A.xlsx"
For x = 1 To Worksheets.Count
If ActiveWorkbook.Worksheets(x).CodeName = "Auftrag" Then ActiveWorkbook.Worksheets(x).Activate
Next
Gruß Matthias

Bild

Betrifft: Das fktioniert idR nur dann nicht, ...
von: Luc:-?
Geschrieben am: 07.10.2015 19:14:00
…Peter,
wenn der CodeName nicht eindeutig ist, d.h., noch eine andere Mappe mit einem Blatt gleichen CodeNamens geöffnet ist oder ein weiteres Objekt dieses Namens (ggf als Global­Variable) existiert. Die CodeNames bezeichnen nämlich unitäre Objekte und sind nicht direkt vom jeweiligen Workbook abhängig. Man kann aber mit codename.Parent.Name deren Workbook feststellen.
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: Du irrst Dich Luc ...
von: Matthias L
Geschrieben am: 07.10.2015 19:44:56
Hallo Luc
Ich hab das getestet.
Es gab eindeutig nur den CodeNamen in dem vom Code geöffneten Workbook
Es gibt keine Mappe mit gleichem CodeNamen!
Ich bekomme es auch nur so hin, in dem ich den Codenamen per Index abfrage
und wenn er stimmt per Index aktiviere.
Gruß Matthias

Bild

Betrifft: Ich habe es auch getestet (Xl12)! Wat nu? ;-)
von: Luc:-?
Geschrieben am: 07.10.2015 20:00:19
Es hat nur unter den von mir beschriebenen Bedingungen nicht fktioniert, Matti.
Gruß, Luc :-?

Bild

Betrifft: Allerdings kann ich nichts zu 365 sagen! owT
von: Luc:-?
Geschrieben am: 07.10.2015 20:01:34
:-?

Bild

Betrifft: Verwirrung
von: Matthias L
Geschrieben am: 07.10.2015 20:07:04
Hi
Ist ja auch egal.
Aber in meinem Bsp. konnte ich es wenigstens realisieren.
Dein Einspruch hat mich nur verwirrt!
Gruß Matthias

Bild

Betrifft: Das deine Variante auch fktioniert, war klar, ...
von: Luc:-?
Geschrieben am: 07.10.2015 23:06:11
…Matti,
aber eigentlich sollte auch die direkte Anwendung möglich sein, denn dafür wurde das Objekt ja geschaffen. Viell hat MS bei Überarbeitung von VBA ja was verbockt… ;-)
Luc :-?

Bild

Betrifft: AW: Das deine Variante auch fktioniert, war klar, ...
von: PeTeR
Geschrieben am: 08.10.2015 10:19:37
Hallo ihr 3,
erstmal ganz, ganz herzlichen Dank für euere professionellen Lösungen. SUPER!!
@Luc: Auch bei mir gibt es den Codenamen definitiv nur ein einziges Mal, aber der Zugriff klappt nicht. Was auch immer MS da verbockt hat :-(
Many Thanx, PeTeR

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabelle per Codename auswählen"