Clever-Excel-Forum

Normale Version: Office 365: Excel vba: Zellwert aus geschlossener Arbeitsmappe
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten morgen zusammen,

habe schon wieder eine Frage an dieses kompetente Forum.

Aus einer geschlossenen Arbeitsmappe möchte ich einen Zellwert auslesen.
Mitfolgender Codezeile funktioniert das auch super:
Code: [Auswählen]
 
Code:
 Cells(6, colTarget2).Value = ExecuteExcel4Macro(quelle & Cells(rowQuell, colQuell).Address(ReferenceStyle:=x1R1C1))
Um variabler zu sein möchte ich die Zelle aber mit einem definierten Namen ansprechen zB. so:
Code: [Auswählen]
Code:
Cells(6, colTarget2).Value = ExecuteExcel4Macro(quelle & Range("Testname").Address(ReferenceStyle:=x1R1C1))
Das funktioniert aber leider nicht - da bekomme ich die Fehlermeldung: Die Methode Range für das Objekt_Global ist fehlgeschlagen!
Was mach ich da falsch bzw. wie müsste die Codezeile abgeändert werden?

Für einen Lösungsvorschlag wäre ich dankbar!

Wünsche noch einen schönen Tag
Erich
Hallo Erich, :19:

persönlich arbeite ich nicht mehr mit "ExecuteExcel4Macro" - macht zuviel Probleme und ist nicht flexibel genug. Probiere es mal so: :21:

Code:
Option Explicit
Const strSheetQ As String = "Tabelle1" ' DIE Tabelle wird ausgelesen"
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in DIESER Datei
Const strQuelle As String = "TestName" ' Der Bereich mit definiertem Namen
Const strZiel As String = "E7" ' Die Zielzelle in DIESER Datei
Const strFile As String = "C:\Temp\08_Datei.xlsx" ' Pfad und Datei
Public Sub Main()
    With ThisWorkbook.Worksheets(strSheetZ)
        .Range(strZiel).Formula = "='" & Mid(strFile, 1, _
            InStrRev(strFile, "\")) & "[" & _
            Mid(strFile, InStrRev(strFile, _
            "\") + 1) & "]" & _
            strSheetQ & "'!" & strQuelle
            .Range(strZiel).Formula = .Range(strZiel).Value
    End With
End Sub
Public Sub Main_1()
    Dim strQuellSheet As String
    Dim strZielSheet As String
    Dim strDefName As String
    Dim strZielZelle As String
    Dim strDatei As String
    With Tabelle1
        strQuellSheet = .Range("A10").Text
        strZielSheet = .Range("A11").Text
        strDefName = .Range("A12").Text
        strZielZelle = .Range("A13").Text
        strDatei = .Range("A14").Text
    End With
    With ThisWorkbook.Worksheets(strZielSheet)
        .Range(strZielZelle).Formula = "='" & Mid(strDatei, 1, _
            InStrRev(strDatei, "\")) & "[" & _
            Mid(strDatei, InStrRev(strDatei, _
            "\") + 1) & "]" & _
            strQuellSheet & "'!" & strDefName
            .Range(strZielZelle).Formula = .Range(strZielZelle).Value
    End With
End Sub

Du arbeitest entweder mit der Sub "Main" und den dazugehörigen Konstanten, oder mit der Sub "Main_1" - da werden die Daten wie definierter Name, Quelltabellenblatt usw. aus bestimmten Zellen geholt.
Hallo und vielen Dank für die Lösungsvorschläge.

Habe mich mal mit der Main-Version beschäftigt - leider ohne Erfolg.
Es kommt die Fehlermeldung: Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler.

Die Angaben die ich gemacht habe sind folgende:
Code:
Option Explicit

Const strSheetQ As String = "BMS-Vergleich" ' DIE Tabelle wird ausgelesen"
Const strSheetZ As String = "Checkliste Home All" ' Die Tabelle in DIESER Datei
Const strQuelle As String = "BMS_2018" ' Der Bereich mit definiertem Namen
Const strZiel As String = "BMS_Test" ' Die Zielzelle in DIESER Datei
Const strFile As String = "D:\xyz\Office\Excel\Aktuell\1.1_XYZ1_V2018.xlsm" ' Pfad und Datei

Hast Du ev. noch ne Idee an was es hapern könnte?
Hallo Erich, :19:

hab es mal mit allen Konstanten von Dir getestet - es geht. :21:

Den 1004er bekomme ich z. B. wenn einer der definierten Namen nicht stimmt.
Ups, dann muss ich nochmals testen.

Geht aber erst morgen.

Vielen Dank für die Rückmeldung, melde mich wenn ich nicht weiterkomme.