2017-06-22 4 views
0

Ich versuche, ein Makro zu schreiben, das Daten aus mehreren externen Arbeitsmappen in einer bestimmten Arbeitsmappe in einer bestimmten Reihenfolge kopiert. Ich beabsichtige nicht, jede Arbeitsmappe geöffnet sein, um für meinen Makro zu arbeiten, denn das würde eine unerhörte Anzahl offener Tabellen sein, so habe ich eine Google-Suche und stieß auf dieser raffinierten Funktion, die GetValue-Funktion: http://spreadsheetpage.com/index.php/tip/a_vba_function_to_get_a_value_from_a_closed_file/Wie löse ich Laufzeitfehler mit GetValue-Funktion in Excel VBA?

Um mich für den Rest des Codes vorzubereiten, habe ich einen Code erstellt, der einfach nur ein einzelnes Stück Daten aus einer Zelle einer externen Arbeitsmappe entnimmt und es in eine einzelne Zelle der Arbeitsmappe und des Arbeitsblattes, in dem ich mich befinde, legt zur Zeit in. Im aktuellen Arbeitsblatt steckte ich die Dateipfade der Arbeitsmappen, auf die ich zugreifen möchte, in die B-Spalte und die Dateinamen in die A-Spalte, da es so viele gibt und ich auf alle in einem zugreifen kann Code. Hier ist der Code:

Sub Gather_Data() 

Dim p As String 
Dim f As String 
Dim s As String 
Dim a As String 

p = Range("B7").Value 
f = Range("A7").Value 
s = Sheet5 
a = D7 

Cells(10, 10).Value = GetValue(p, f, s, a).Value 

End Sub 

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(, , xlR1C1) 
' Execute an XLM macro 
    GetValue = ExecuteExcel4Macro(arg) 
End Function 

ich nichts falsch mit dem Code sehen, aber wenn ich versuche, es zu laufen ich einen Laufzeitfehler erhalten, die besagt, „Die Methode‚Range‘des Objekts‚_Global‘ gescheitert". Ich habe ehrlich gesagt keine Ahnung, was das bedeutet und den Debugger läuft unterstreicht das

arg = "'" & path & "[" & file & "]" & sheet & "'!" & _ 
     Range(ref).Range("A1").Address(, , xlR1C1) 

Gebiet, das ich gar nicht schreiben. Wenn jemand Erfahrung mit der Verwendung dieser Funktion hat oder weiß, wie dieser Fehler behoben werden kann, würde Ihre Eingabe sehr geschätzt werden. Danke im Voraus!

Antwort

0

Ihre Variablen als String deklariert, so versuchen Sie den Code aus diesem Wechsel:

s = Sheet5 
a = D7 

Um dies:

s = "Sheet5" 
a = "D7" 
+0

Thank you! Ich hätte das selbst herausfinden können ... oops. –

Verwandte Themen