Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBA Laufzeitfehler 5 beim Auslesen von einem Textfeld aus ERP-System (Psipenta)

Frage Entwicklung VB for Applications

Mitglied: OxanaG

OxanaG (Level 1) - Jetzt verbinden

05.12.2012, aktualisiert 10:40 Uhr, 3094 Aufrufe, 9 Kommentare

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:

01.
Sub Testbutton_Click()    
02.
     
03.
  Dim oBoXDMR As PsipentaBO 
04.
  Dim oDetailXDMR As PsipentaDetail 
05.
  Dim oFilterXDMR As PsipentaFilter 
06.
   
07.
  Dim oDetail As PsipentaDetail 
08.
     
09.
  Dim strZusatzfeld1 As String 
10.
  Dim strTag1 As String 
11.
  Dim strTag2 As String 
12.
  Dim intLeft As Integer 
13.
  Dim intRight As Integer 
14.
 
15.
  Set oBoXDMR = Application.createBO("XDMR") 
16.
  Set oDetailXDMR = oBoXDMR.getDetail 
17.
  Set oFilterXDMR = oBoXDMR.getFilter 
18.
 
19.
  On Error GoTo ErrorHandler 
20.
     
21.
  strZusatzfeld1 = oDetailXDMR.getFieldContent("CONTENT") 
22.
 
23.
  MsgBox (strZusatzfeld1) 
24.
     
25.
  intLeft = InStr(1, strZusatzfeld1, "<") + 1 
26.
  intRight = InStr(intLeft, strZusatzfeld1, ">") 
27.
  strTag1 = Mid(strZusatzfeld1, intLeft, intRight - intLeft) 'Diese Zeile wird beim Ausführen des Makros  
28.
                                                             'markiert, sobald ich auf Debuggen klicke. 
29.
 
30.
  MsgBox (strTag1) 
31.
 
32.
  intLeft = InStr(intRight, strZusatzfeld1, "<") + 1 
33.
  intRight = InStr(intLeft, strZusatzfeld1, ">") 
34.
  strTag2 = Mid(strZusatzfeld1, intLeft, intRight - intLeft) 
35.
 
36.
  MsgBox (strTag2) 
37.
 
38.
Exit Sub 
39.
 
40.
ErrorHandler: 
41.
    Select Case Err.Number 
42.
         Case PsipentaErrNoSelectionSet 
43.
             ' Nichts selektiert 
44.
             Message = Err.Description 
45.
         Case Else 
46.
             ' sonstiger Fehler 
47.
             Message = "Error: " & Err.Number & " " & Err.Description 
48.
    End Select 
49.
     
50.
End Sub

Danke schon mal.

Beste Grüße

Peter Brausel
Mitglied: SlainteMhath
05.12.2012 um 11:03 Uhr
Moin,

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

lg,
Slainte
Bitte warten ..
Mitglied: 76109
05.12.2012 um 11:05 Uhr
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:
01.
intPos = InStr(strZusatzfeld1, "<") 
02.
 
03.
If intPos > 0 Then 
04.
... 
05.
End If
Gruß Dieter
Bitte warten ..
Mitglied: OxanaG
05.12.2012 um 11:14 Uhr
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:
01.
> intPos = InStr(strZusatzfeld1, "<") 
02.
>  
03.
> If intPos > 0 Then 
04.
> ... 
05.
> End If 
06.
> 
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:
01.
strZusatzfeld1 = "<Test>   <A/BCDEFG-12345>"
dann funktioniert es und ich bekomme per MsgBox folgendes ausgegeben:
1. Meldung: Test
2. Meldung: A/BCDEF-12345
Bitte warten ..
Mitglied: 76109
05.12.2012, aktualisiert um 11:20 Uhr
Hallo OxanaG!

Logisch, dass es mit der Testzeile funktioniert, aber
01.
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 wird

Gruß Dieter
Bitte warten ..
Mitglied: OxanaG
05.12.2012 um 11:50 Uhr
Zitat von 76109:
Hallo OxanaG!

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

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


01.
 
02.
  Dim strZusatzfeld1 As String 
03.
  Dim strTag1 As String 
04.
  Dim strTag2 As String 
05.
  Dim intLeft As Integer 
06.
  Dim intRight As Integer 
07.
 
08.
  'On Error GoTo ErrorHandler 
09.
 
10.
  strZusatzfeld1 = oDetail.getFieldContent("FELD_1_X30") 
11.
 
12.
  intLeft = InStr(1, strZusatzfeld1, "<") + 1 
13.
  intRight = InStr(intLeft, strZusatzfeld1, ">") 
14.
  strTag1 = Mid(strZusatzfeld1, intLeft, intRight - intLeft) 
15.
 
16.
  MsgBox (strTag1) 
17.
 
18.
  intLeft = InStr(intRight, strZusatzfeld1, "<") + 1 
19.
  intRight = InStr(intLeft, strZusatzfeld1, ">") 
20.
  strTag2 = Mid(strZusatzfeld1, intLeft, intRight - intLeft) 
21.
 
22.
  MsgBox (strTag2) 
23.
 
24.
Exit Sub 
25.
 
26.
ErrorHandler: 
27.
    Select Case Err.Number 
28.
         Case PsipentaErrNoSelectionSet 
29.
             ' Nichts selektiert 
30.
             Message = Err.Description 
31.
         Case Else 
32.
             ' sonstiger Fehler 
33.
             Message = "Error: " & Err.Number & " " & Err.Description 
34.
    End Select 
35.
End Sub
Bitte warten ..
Mitglied: SlainteMhath
05.12.2012 um 11:59 Uhr
Naja das liegt daran, das "oDetail" in deinem Code nicht deklariert wird - genauso wie's in der Fehlermeldung drin steht
Bitte warten ..
Mitglied: OxanaG
05.12.2012, aktualisiert um 12:50 Uhr
Zitat von SlainteMhath:
Naja das liegt daran, das "oDetail" in deinem Code nicht deklariert wird - genauso wie's in der Fehlermeldung drin
steht

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?
Bitte warten ..
Mitglied: SlainteMhath
05.12.2012 um 13:20 Uhr
Jetzt kopier noch die Zeilen 15+16 aus deinem Ursprünglichen Script, dann ist die Objektvariable auch festgelegt.
Bitte warten ..
Mitglied: OxanaG
05.12.2012 um 13:23 Uhr
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.
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
VB for Applications
Excel VBA XML-Nodes auslesen (4)

Frage von chef1568 zum Thema VB for Applications ...

VB for Applications
gelöst VBA: Wert von einer Website (pdf-Dokument) auslesen und in Excel kopieren (16)

Frage von Stern123 zum Thema VB for Applications ...

VB for Applications
gelöst VBA Outlook - Mail delivery system (5)

Frage von carolin.zelda zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...