VBA Laufzeitfehler 5 beim Auslesen von einem Textfeld aus ERP-System (Psipenta)
Hallo,
ich programmiere zurzeit ein Makro, das bestimmte Textfelder aus unsrem ERP-System (Psipenta) auslesen soll.
Jedoch blieb ich an einer Fehlermeldung hängen: Laufzeitfehler 5 - Ungültiger Prozeduraufruf oder ungültiges Argument - Fehlermeldung für Zeile 27, diese Zeile wird beim Ausführen markiert.
Ich wäre demjenigen sehr dankbar, wenn dieser mir helfen könnte. Habe schon mehrere Varianten ausprobiert, immer kommt dieser Fehler.
Zusätzlich wird noch eine Verbindung mit einer externen Tabelle (XDMR) hergestellt, aus dieser Tabelle wird ein Textfeld (CONTENT) ausgelesen.
Wenn ich aus der internen Tabelle ein Textfeld auslese kommt der selbe Fehler.
Ich weiss nur, dass der Inhalt des Textfeldes nicht übergeben wird und strZusatzfeld1 dann leer ist.
Mein Code sieht wie folgt aus:
Danke schon mal.
Beste Grüße
Peter Brausel
ich programmiere zurzeit ein Makro, das bestimmte Textfelder aus unsrem ERP-System (Psipenta) auslesen soll.
Jedoch blieb ich an einer Fehlermeldung hängen: Laufzeitfehler 5 - Ungültiger Prozeduraufruf oder ungültiges Argument - Fehlermeldung für Zeile 27, diese Zeile wird beim Ausführen markiert.
Ich wäre demjenigen sehr dankbar, wenn dieser mir helfen könnte. Habe schon mehrere Varianten ausprobiert, immer kommt dieser Fehler.
Zusätzlich wird noch eine Verbindung mit einer externen Tabelle (XDMR) hergestellt, aus dieser Tabelle wird ein Textfeld (CONTENT) ausgelesen.
Wenn ich aus der internen Tabelle ein Textfeld auslese kommt der selbe Fehler.
Ich weiss nur, dass der Inhalt des Textfeldes nicht übergeben wird und strZusatzfeld1 dann leer ist.
Mein Code sieht wie folgt aus:
Sub Testbutton_Click()
Dim oBoXDMR As PsipentaBO
Dim oDetailXDMR As PsipentaDetail
Dim oFilterXDMR As PsipentaFilter
Dim oDetail As PsipentaDetail
Dim strZusatzfeld1 As String
Dim strTag1 As String
Dim strTag2 As String
Dim intLeft As Integer
Dim intRight As Integer
Set oBoXDMR = Application.createBO("XDMR")
Set oDetailXDMR = oBoXDMR.getDetail
Set oFilterXDMR = oBoXDMR.getFilter
On Error GoTo ErrorHandler
strZusatzfeld1 = oDetailXDMR.getFieldContent("CONTENT")
MsgBox (strZusatzfeld1)
intLeft = InStr(1, strZusatzfeld1, "<") + 1
intRight = InStr(intLeft, strZusatzfeld1, ">")
strTag1 = Mid(strZusatzfeld1, intLeft, intRight - intLeft) 'Diese Zeile wird beim Ausführen des Makros
'markiert, sobald ich auf Debuggen klicke.
MsgBox (strTag1)
intLeft = InStr(intRight, strZusatzfeld1, "<") + 1
intRight = InStr(intLeft, strZusatzfeld1, ">")
strTag2 = Mid(strZusatzfeld1, intLeft, intRight - intLeft)
MsgBox (strTag2)
Exit Sub
ErrorHandler:
Select Case Err.Number
Case PsipentaErrNoSelectionSet
' Nichts selektiert
Message = Err.Description
Case Else
' sonstiger Fehler
Message = "Error: " & Err.Number & " " & Err.Description
End Select
End Sub
Danke schon mal.
Beste Grüße
Peter Brausel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195392
Url: https://administrator.de/forum/vba-laufzeitfehler-5-beim-auslesen-von-einem-textfeld-aus-erp-system-psipenta-195392.html
Ausgedruckt am: 24.04.2025 um 04:04 Uhr
9 Kommentare
Neuester Kommentar

Hallo OxanaG!
Du musst in den Codezeilen 25-27 auch sicherstellen, dass das Zeichen "<" oder ">" im String vorhanden ist, ansonsten bekommst Du als Ergebnis 0, was bei der Weiterverarbeitung zu Deinem Fehler führt (Position 0 gibt es nicht).
In etwa so:
Gruß Dieter
Du musst in den Codezeilen 25-27 auch sicherstellen, dass das Zeichen "<" oder ">" im String vorhanden ist, ansonsten bekommst Du als Ergebnis 0, was bei der Weiterverarbeitung zu Deinem Fehler führt (Position 0 gibt es nicht).
In etwa so:
intPos = InStr(strZusatzfeld1, "<")
If intPos > 0 Then
...
End If
Gruß Dieter

Hallo OxanaG!
Logisch, dass es mit der Testzeile funktioniert, aber
liefert Dir nicht das gewünsche Ergebnis, von daher auch überprüfen, ob ein Verarbeitungsfähiger Wert vom InStr zurückgegeben wird
Gruß Dieter
Logisch, dass es mit der Testzeile funktioniert, aber
strZusatzfeld1 = oDetailXDMR.getFieldContent("CONTENT")
Gruß Dieter