Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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.
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • sharky51
Antworten 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?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten 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.
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • sharky51
Antworten 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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


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