Office: Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler)

Helfe beim Thema Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler) in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, aus einer geschlossenen Datei möchte ich Werte (in den betreffenden Zellen werden nur Buchstaben stehen) in eine geöffnete Tabelle... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von aal260646, 4. Dezember 2014.

  1. aal260646 Erfahrener User

    Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler)


    Hallo zusammen,

    aus einer geschlossenen Datei möchte ich Werte (in den betreffenden Zellen werden nur Buchstaben stehen) in eine geöffnete Tabelle übernehmen. Die Zellen sind dabei jeweils identisch.

    Nach dem, was ich im Internet bislang gefunden habe, habe ich mir folgendes zusammengefrickelt (dass Hauptwerk stamm nicht von mir, sondern ist nur kopiert und laienhaft für meine Bedürfnisse geändert.:

    Sub 2015GetValue()

    Dim a As String
    Dim b As String
    Dim c As String
    Dim Zelle As Range, wks As Worksheet, Bereich As String
    Set wks = Worksheets("Jahresplan") 'Tabelle in der die Werte eingefügt werden sollen
    a = "W:\Z042\042-Abwesenheiten\"
    b = "2015.xls"
    c = "Jahresplan"
    Bereich = "E9:H391" 'auszulesender/auszufüllender Zellbereich

    'Schreibt die Werte in die angegebene Tabelle in den Bereich
    For Each Zelle In wks.Range(Bereich)
    Zelle.Value = GetValue(a, b, c, Zelle.Address)
    'Nullwerte nicht übernehmen
    If IsNumeric(Zelle.Value) Then
    If Zelle.Value = 0 Then Zelle.ClearContents
    End If
    Next Zelle

    End Sub


    Leider bekomme ich bei Ausführung des Makro immer die Fehlermeldung:

    "Fehler beim Kompilieren:
    Sub oder Function nicht definiert"

    Im Debugger ist dann immer der Begriff "GetValue", den ich hier fett gedruckt habe farbig hinterlegt.

    Was mache ich falsch?

    Vielen Dank schon einmal für Eure Hilfe!

    Gruß
    Christian
     
    Zuletzt bearbeitet: 4. Dezember 2014
    aal260646, 4. Dezember 2014
    #1
  2. maninweb
    maninweb MVP für Microsoft Excel
    Hallo,

    GetValue() ist keine Standardprozedur von Excel, deshalb kennt Excel die Prozedur nicht.
    Daher müsste, z.B. da wo Du den retlichen Code gefunden hattest, eine Prozedur dabei sein,
    die entsprechend benannt ist.

    Gruß
     
    maninweb, 4. Dezember 2014
    #2
  3. aal260646 Erfahrener User
    Hallo maninweb,

    dank Dir schon mal für Deine Information.

    Folgendes habe ich an der Stelle noch gefunden. Damit kann ich aber noch weniger anfangen (weil ich es nicht verstehe):

    Private Function GetValue(path, file, sheet, ref)
    ' Retrieves a value from a closed workbook
    Dim arg As String
    ' Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
    GetValue = "File Not Found"
    Exit Function
    End If
    ' Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
    Range(ref).Range("A1").Address(, , xlUp)
    GetValue = ExecuteExcel4Macro(arg)
    End Function

    Wenn ich das vor meine Funktion kopiere, bekomme ich die Fehlermeldung "Index außerhalb des gültigen Bereichs".

    Jetzt offenbart sich wahrscheinlich noch viel stärker meine vollkommene Unwissenheit. (*schäm*)

    Gruß

    Christian
     
    aal260646, 4. Dezember 2014
    #3
  4. maninweb
    maninweb MVP für Microsoft Excel

    Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler)

    Hallo,

    ich habe es Dir mal etwas aufbereitet. Eine Prozedur kann in VBA nicht mit einer Zahl beginnen.
    Deshalb kannst Du 2015GetValue nicht als Name verwenden.
    Code:
    Private Function GetValue(Pfad As String, Datei As String, Blatt As String, Bezug As String)
      
      Dim Argument As String
      
    ' Backslash dranhängen, falls nicht vorhanden...
      
      If Right(Pfad, 1) <> "\" Then
      
        Pfad = Pfad & "\"
        
      End If
      
    ' Existenz der Datei prüfen...
      
      If Dir(Pfad & Datei) = "" Then
      
        GetValue = "Datei nicht gefunden"
        
        Exit Function
        
      End If
      
    ' Argument erzeugen...
      
      Argument = "'" & Pfad & "[" & Datei & "]" & Blatt & "'!" & _
                       Range(Bezug).Range("A1").Address(, , xlUp)
      
    ' Auslesen...
      
      GetValue = ExecuteExcel4Macro(Argument)
      
    End Function
    
    
    Public Sub GetValue_2015()
    
    
      Dim Pfad    As String
      Dim Datei   As String
      Dim Tabelle As String
      Dim Zelle   As Range
      Dim Mappe   As Worksheet
      Dim Bereich As String
      
    ' Verweis auf die Mappe setzen...
      
      Set Mappe = Worksheets("Jahresplan")
      
    ' Initialisieren...
      
      Pfad = "W:\Z042\042-Abwesenheiten\"
      Datei = "2015.xls"
      Tabelle = "Jahresplan"
      Bereich = "E9:H391"
      
    ' In Schleife alle Zellen durchlaufen...
      
      For Each Zelle In Mappe.Range(Bereich)
        
    '   Wert lesen...
        
        Zelle.Value = GetValue(Pfad, Datei, Tabelle, Zelle.Address)
        
    '   Nullwerte nicht übernehmen
        
        If IsNumeric(Zelle.Value) Then
          
          If Zelle.Value = 0 Then
          
            Zelle.ClearContents
          
          End If
          
        End If
        
      Next Zelle
    
    
    ' Aufräumen...
      
      Set wks = Nothing
      
    End Sub
    
    Deinen Code aus dem Modul entfernen und durch das hier oben ersetzen. Klappt das dann?

    Gruß
     
    maninweb, 4. Dezember 2014
    #4
  5. aal260646 Erfahrener User
    Hallo Maninweb,

    ja, im Prinzip ist das genau das, was ich gehofft hatte zu bekommen. Vielen Dank dafür!!!

    Allerdings orgelt sich die Funktion Zelle für Zelle langsam durch das Blatt durch, so dass es bei der Vielzahl an Zellen recht lange dauert.

    Da das Ganze in zwei Kalendern laufen soll, die gegenseitig aufeinander zugreifen und tagtäglich von ca. 150 verschiedenen Personen genutzt werden ist das leider unpraktikabel. Da muss ich mir wohl etwas anderes einfallen lassen. Gibt es die Möglichkeit, direkt ganze Bereiche zu kopieren (ohne jede Zelle einzeln anzusprechen)?

    Viele Grüße

    Christian
     
    aal260646, 4. Dezember 2014
    #5
  6. maninweb
    maninweb MVP für Microsoft Excel
    Hallo,

    mit der Methode da oben wäre mir nichts bekannt. Alternativ kann man die Dateien schreibgeschützt per Code öffnen, die Daten auslesen und die Dateien wieder schließen. Dürfte etwas schneller sein.

    Gruß
     
    maninweb, 5. Dezember 2014
    #6
  7. aal260646 Erfahrener User
    Hallo maninweb,

    das Problem hat sich inzwischen erledigt. Ich habe einfach Verknüpfungen zwischen den Dateien erzeugt. Die anfänglichen Probleme hiermit (ständige Fehlermeldung, dass Verknüpfungen nicht aktualisiert werden können) aufgrund derer ich zunächst davon Abstand genommen hatte, konnte ich lösen. Es waren noch Verknüpfungen zu benannten Bereichen hinterlegt, die diese Meldung ausgelöst hatten.

    Daher konnte ich mir mit dieser einfachen Möglichkeit helfen und brauchte doch keine VBA-Lösung.

    Trotzdem besten Dank noch einmal für Deine Unterstützung.

    Gruß
    Christian
     
    aal260646, 11. Dezember 2014
    #7
Thema:

Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler)

Die Seite wird geladen...
  1. Daten aus geschlossener Arbeitsmappe auslesen (GetValue-Fehler) - Similar Threads - Daten geschlossener Arbeitsmappe

  2. Geschlossene Datei Makro für Daten entziehen

    in Microsoft Excel Hilfe
    Geschlossene Datei Makro für Daten entziehen: Liebes Forum, Ich bin schon lange dabei eine Makro-Lösung für meine Datei zu finden, doch leider gelingt es mir einfach nicht - Ich hoffe ihr könnt mir helfen: Die Zieldatei soll die Daten...
  3. Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen

    in Microsoft Excel Hilfe
    Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen: Hallo, ich bräuchte mal eure Hilfe Ich habe ein Solaranlage, wo ich jede Woche neu Daten bekomme, die ich in der Arbeitsmappe SolarStrom 2020_01_01 speichere. Die Daten werden in eine Formular...
  4. Daten aus geschlossener Mappe importieren mit Auswahlmöglichkeit

    in Microsoft Excel Hilfe
    Daten aus geschlossener Mappe importieren mit Auswahlmöglichkeit: Hallo Zusammen, ich habe mal wieder ein kleines Problem. ich möchte aus einer geschlossenen Arbeitsmappe mehrere Bereiche auslesen und in eine andere (geöffnete) Mappe einlesen. Beim Stöbern bin...
  5. Daten aus geschlossener Exceltabelle auslesen

    in Microsoft Excel Hilfe
    Daten aus geschlossener Exceltabelle auslesen: Hallo zusammen, ich bräuchte da noch einmal dringend eure Hilfe. Ich versuche Daten aus einer geschlossenen Excel Tabelle auszulesen und erhalte immer wieder eine Fehlermeldung "Index ausserhalb...
  6. Daten aus geschlossener Exceldatei einlesen

    in Microsoft Excel Hilfe
    Daten aus geschlossener Exceldatei einlesen: Hallo Zusammen, ich hoffe nervt nicht wenn es die 1000te Anfrage dieser Art ist, aber iwie komme ich nicht recht weiter. Ich möchte aus 1 Exceldatei mit mehreren Reitern (immer selber Name )...
  7. Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien

    in Microsoft Excel Hilfe
    Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien: Hallo zusammen, ich hoffe bei euch ist alles gut. Ich möchte verschiedene gesicherte Formulare in denen lediglich bestimmte Felder/Zellen bearbeitet werden können (Word oder Excel, am liebsten...
  8. VBA Daten auf geschützter und geschlossener Datei holen, pleace help!!

    in Microsoft Excel Hilfe
    VBA Daten auf geschützter und geschlossener Datei holen, pleace help!!: Hallo @ all, ich benötige mal wieder etwas Hilfe. Ich hole Daten aus einer geschlossenen Datei mittels Makro. Dieses funktioniert auch sehr gut. Nun soll aber die Datei Passwortgeschützt...
  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