oxanag
Goto Top

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:

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

Content-Key: 195392

Url: https://administrator.de/contentid/195392

Printed on: April 24, 2024 at 11:04 o'clock

Member: SlainteMhath
SlainteMhath Dec 05, 2012 at 10:03:25 (UTC)
Goto Top
Moin,

vielleicht solltest Du prüfen, ob strZusatzfeld1="" ist und wenn ja dann eben nicht versuchen die Tags per MID$ auslesen.

lg,
Slainte
Mitglied: 76109
76109 Dec 05, 2012 at 10:05:07 (UTC)
Goto Top
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:
intPos = InStr(strZusatzfeld1, "<")  

If intPos > 0 Then
...
End If

Gruß Dieter
Member: OxanaG
OxanaG Dec 05, 2012 at 10:14:26 (UTC)
Goto Top
Zitat von @76109:
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:
> intPos = InStr(strZusatzfeld1, "<")  
> 
> If intPos > 0 Then
> ...
> End If
> 

Gruß Dieter

Hallo did1954,

in dem Textfeld steht aber ein Wert mit "<" und ">".
der Inhalt sieht so aus: <Test> <A/BCDEFG-12345>

Der Code funktioniert ja auch, wenn ich die Zeile 21 durch diese Zeile ersetze:
strZusatzfeld1 = "<Test>   <A/BCDEFG-12345>"  
dann funktioniert es und ich bekomme per MsgBox folgendes ausgegeben:
1. Meldung: Test
2. Meldung: A/BCDEF-12345
Mitglied: 76109
76109 Dec 05, 2012 updated at 10:20:31 (UTC)
Goto Top
Hallo OxanaG!

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

Gruß Dieter
Member: OxanaG
OxanaG Dec 05, 2012 at 10:50:40 (UTC)
Goto Top
Zitat von @76109:
Hallo OxanaG!

Logisch, dass es mit der Testzeile funktioniert, aber
> strZusatzfeld1 = oDetailXDMR.getFieldContent("CONTENT")   
> 
liefert Dir nicht das gewünsche Ergebnis, von daher auch überprüfen, ob ein Verarbeitungsfähiger Wert vom
InStr zurückgegeben wirdface-wink

Gruß Dieter

Hallo didi1954,

was heisst das genau? also wie muss der Code dann aussehen?

Ich habe jetzt ein Textfeld aus einer internen tabelle ausgelesen.
Da wurde mir in der Zeile 10 folgender Fehler ausgegeben:
Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt


  Dim strZusatzfeld1 As String
  Dim strTag1 As String
  Dim strTag2 As String
  Dim intLeft As Integer
  Dim intRight As Integer

  'On Error GoTo ErrorHandler  

  strZusatzfeld1 = oDetail.getFieldContent("FELD_1_X30")  

  intLeft = InStr(1, strZusatzfeld1, "<") + 1  
  intRight = InStr(intLeft, strZusatzfeld1, ">")  
  strTag1 = Mid(strZusatzfeld1, intLeft, intRight - intLeft)

  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
Member: SlainteMhath
SlainteMhath Dec 05, 2012 at 10:59:02 (UTC)
Goto Top
Naja das liegt daran, das "oDetail" in deinem Code nicht deklariert wird - genauso wie's in der Fehlermeldung drin steht face-smile
Member: OxanaG
OxanaG Dec 05, 2012 updated at 11:50:54 (UTC)
Goto Top
Zitat von @SlainteMhath:
Naja das liegt daran, das "oDetail" in deinem Code nicht deklariert wird - genauso wie's in der Fehlermeldung drin
steht face-smile

Sorry, habe eine Zeile vergessen zu kopieren.
Des steht in Zeile 1: Dim oDetail As PsipentaDetail
oDetail ist also deklariert, sonst würde ein anderer Fehler kommen: Variable nicht definiert --> ist aber nicht der Fall.
Nur kommt dieser Fehler trotzdem:
Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt

Kann mir da irgent jemand helfen?
Member: SlainteMhath
SlainteMhath Dec 05, 2012 at 12:20:18 (UTC)
Goto Top
Jetzt kopier noch die Zeilen 15+16 aus deinem Ursprünglichen Script, dann ist die Objektvariable auch festgelegt.
Member: OxanaG
OxanaG Dec 05, 2012 at 12:23:22 (UTC)
Goto Top
Zitat von @SlainteMhath:
Jetzt kopier noch die Zeilen 15+16 aus deinem Ursprünglichen Script, dann ist die Objektvariable auch festgelegt.

das habe ich ja gemacht. das ist in meinem Script schon drinnen. Der Fehler kommt trotzdem.