Office 365: Excel vba: Zellwert aus geschlossener Arbeitsmappe
#1
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
Top
#2
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.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • sharky51
Top
#3
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?
Top
#4
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.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • sharky51
Top
#5
Ups, dann muss ich nochmals testen.

Geht aber erst morgen.

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


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste