um in einem geschlossenen Workbook den Adressbereich eines bestimmten Names mit Übergabe des Worksheets auszulesen, habe ich den folgenden Code geschrieben. Dieser funktioniert grundsätzlich, nur je nach Größe und Komplexität der "Datendatei" dauert es doch gefühlt 2-4 Sekunden, die Datei zu verarbeiten. Mein größeres Problem ist aber, dass die geöffnete Datndateii im Hintergrund trotz Close Befehl geöffnet bleibt. Das merkt man, wenn man die Datei, aus der ich den Funktionsaufruf starte, wieder schließe mit Speichern und ich dann gefragt werde, ob ich die "Datendatei" auch speichern möchte.
Meine Frage also:
1) Gehe ich mit dem Lesen eines Namens Adressbereichs korrekt vor?
2) Warum schließt die Datendatei sich nicht wieder?
D&G
Kay
Public Function GetDataRange(sWS As String) As String ' mit Übergabe des Worksheets
Dim sPfad As String ' der Pfad (Ordner) der anderen Mappe
Dim sDatei As String ' der Name der anderen Mappe
Dim oWB As Workbook
Dim sArea As String
sPfad = "D:\Testdaten\" ' den Pfad-Namen ggf. anpassen mit Abschluss \.
sDatei = "Datendatei.xlsx" ' den Datei-Namen ggf. anpassen.
aArea = "" ' Default, falls kein Name DataArea auf dem Woksheet existiert
On Error Resume Next
' Das Objekt holen bzw. öffnen
Set oWB = GetObject(sPfad & sDatei)
'Liest den gesetzten Bereich des bestimmten Namens "DataArea" aus dem übergebenen Worksheet
sArea = oWB.Worksheets(sWS).Names("DataArea").Value
If Err.Number 0 Then
sArea = "Nicht vorhanden"
Err.Number = 0
End If
'Schließt das Workbook bzw. soll es schließen
oWB.Close
If Err.Number 0 Then MsgBox "Fehler beim WB Schließen"
'Gibt der Funktion den Adressbereich des Names DataArea, sofern gesetzt, zurück
GetDataRange = sArea
End Function