function ohne Dateizugriff?
03.06.2022 10:52:36
MCO
Ich hab mir eine Funktion gebaut, mit der ich eine Textdatei (Tab-getrennt) öffne, durchsuche und mir einen Datensatz zurückgeben lasse.
Da es sich hier um Personaldaten handelt, hoffe ich, dass die Beschreibung zur Problemlösung genügt.
Folgendes Phänomen:
Rufe ich die funktion im direktfenster auf mit
? MA_Daten ("ABC0815","5")
bekomme ich den korrekten Rückgabewert. Für micht die Bestätigung: Pfad richtig, Suchlogik richtig, Wert vorhanden.Trage ich die funktion in eine Zelle ein, mit gleichen Parametern (=MA_Daten("ABC0815";"5")), wird mir #WERT zurückgegeben.
Offensichtlich kann hier die funktion nicht meine Textdatei aufrufen!
Die Variable WB in der Zuweisung Set WB = Workbooks.open bleibt nothing
Hat jemand hier einen Lösungshinweis oder ein Workaround?
Hier noch die funktion
Public Function MA_Daten(GID As String, Optional info As String) As String
Dim verantw As String, orga_pfad As String
Dim WB As Workbook
Dim i As Long
Dim gef As Range
Dim Datensatz As Variant, Datensatz_arr As Variant, Datenkopf As Variant, Datenkopf_arr As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
orga_pfad = "C:\TEMP\Organigram.txt"
Set WB = Workbooks.Open(orga_pfad, , 1, 6, , , , , Chr(9))
'WB.Windows(1).Visible = False
Set gef = WB.Sheets(1).Range("D:D").Find(GID, lookat:=xlWhole)
If Not gef Is Nothing Then
Datenkopf = WB.ActiveSheet.Range("A1:L1").Value
Datenkopf_arr = Application.Transpose(Datenkopf)
Datenkopf_arr = Application.Transpose(Datenkopf_arr)
Datensatz = WB.ActiveSheet.Range("A" & gef.Row & ":L" & gef.Row).Value
Datensatz_arr = Application.Transpose(Datensatz)
Datensatz_arr = Application.Transpose(Datensatz_arr)
Else
MA_Daten = GID & " wurde nicht gefunden"
End If
If info = 0 Then
'MA_Daten = Join(Datensatz_arr, ";")
For i = 1 To UBound(Datensatz_arr)
MA_Daten = MA_Daten & "(" & i & ") " & Datenkopf_arr(i) & ": " & Datensatz_arr(i) & Chr(10)
Next i
Else
MA_Daten = Datensatz_arr(info)
End If
WB.Close 0
Application.EnableEvents = True
End Function
Vielen Dank schonmal für´s Lesen!Gruß, MCO