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!
Thank you! Ich hätte das selbst herausfinden können ... oops. –