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, 3334 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Txt-file in excel öffnen (bereitstellung durch erp-system) (15)

Frage von seppmairhubr zum Thema Microsoft Office ...

Peripheriegeräte
Messdatenexport per "Buzzer" an ERP System (8)

Frage von Madzylinder zum Thema Peripheriegeräte ...

VB for Applications
gelöst Mit VBA Zertifikate auslesen (3)

Frage von it4baer zum Thema VB for Applications ...

Microsoft Office
gelöst Excel VBA Datein auslesen (8)

Frage von schwalbepilot zum Thema Microsoft Office ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (24)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (10)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Netzwerkmanagement
Suche eine Software für Cloudverwaltung (6)

Frage von tsunami zum Thema Netzwerkmanagement ...

Google Android
Musik Wiedergabe am PC mit Smartphone über Bluetooth steuern (5)

Frage von justlukas zum Thema Google Android ...