Top-Themen

Aktuelle Themen (A bis Z)

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

EAN-Nummern aus INVRPT auslesen und in einer Excel-Datei speichern

Frage Entwicklung

Mitglied: ozean

ozean (Level 1) - Jetzt verbinden

14.02.2013 um 10:22 Uhr, 1576 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe eine gemischte EDI-Datei, in welcher Sales-Reports (SLSRPT) und Inventur-Reports (INVRPT) aufgeführt sind.

Ich muss aus dieser Datei (im ersten Schritt) alle EANs (eigentlich eine Nummer, welche immer mit 4 beginnt und 13 Stellen hat) auslesen und in einer separaten Datei (z.B. Excel) abspeichern, aber eigentlich aus den Textblöcken, welche zu INVRPT gehören.
Ich kann natürlich alle Text-Blöcke manuell entfernen, welche zu SLSRPT gehören.

Gibt es irgendeine Anwendung oder Script, welche(s) mir bei der Lösung des Problems helfen kann?

Als Programmierer bin leider ein absoluter Laie, das ich mir ein Script schreiben kann.

Vielen Dank!
Mitglied: rubberman
16.02.2013 um 13:10 Uhr
Hallo ozean.

Als Programmierer bin leider ein absoluter Laie ...

Hmm, ich bin als EDI-Dateien-Interpretierer absoluter Laie.
Also musst du jemanden finden der sich sowohl mit Programmieren auskennt, als auch detailliert weiß wie deine EDI Dateien aufgebaut sind. Andere Möglichkeit wäre ja vielleicht, wenn du so eine Datei mal beispielhaft hier ... naja egal.

Grüße
rubberman
Bitte warten ..
Mitglied: ozean
17.02.2013, aktualisiert um 21:41 Uhr
Hallo rubberman,

eigentlich ist die Interpretation einer EDI-Datei eine Nebensache. Vielmehr geht es darum, aus einer Textdatei eine Variable auszulesen, welche mit 4 beginnt und 13 Stellen hat. Hier ist ein Auszug aus dieser Datei:

UNB+UNOC:3+4399902140089:14+4009796000009:14+130201:0948+47431844'
UNH+1+INVRPT:D:96A:UN:EAN004'
BGM+35+1660+9'
DTM+137:20110425:102'
DTM+366:20110425:102'
DTM+194:20110425:102'
DTM+206:20110425:102'
NAD+BY+4399902140089::9'
NAD+SU+4009796000009::9'
NAD+SN+4399902140089::9'
LIN+1++4009796076059:EN'
QTY+145:1'
LIN+2++4009796076066:EN'
QTY+145:1'
LIN+3++4009796076073:EN'
QTY+145:1'
LIN+4++4009796076172:EN'
QTY+145:1'
UNT+102+1'
UNZ+1+47431844'
UNA:+.? '

Auffällig ist, dass diese Nummern immer nach dem "+" beginnen und vor dem ":" enden.
Die Frage ist, was wenn nach dem Plus-Zeichen eine 4 steiht, aber keine 13 Stellen hat und keine EAN ist?

Wie dem auch sei... Tatsache ist, ich habe eine Textdatei mit oben genanntem Inhalt. Als Ergebnis sollte eine neue Textdatei sein, in welcher nur die EAN's stehen:

4399902140089
4009796000009
4399902140089
4009796000009
4399902140089
4009796076059
4009796076066
4009796076073
4009796076172

Über die doppelte Einträge muss man sich keine Gedanken machen, die könnte man im Excel schnell aussortieren.

Wie kann man so was realisieren?

Gruß
Ozean
Bitte warten ..
Mitglied: rubberman
17.02.2013, aktualisiert um 22:41 Uhr
Hallo ozean.

So etwas realisiert man üblicherweise mit Regulären Ausdrücken.
Angenommen deine Ausgangsdatei heißt "test.txt", geschrieben werden soll in "neu.txt" - Folgendes VBScript sollte es tun:

*.vbs
01.
Option Explicit 
02.
 
03.
Const sInFile = "test.txt" 
04.
Const sOutFile = "neu.txt" 
05.
 
06.
Dim oRegex, oFSO, oFile, colMatches, oMatch, sContent 
07.
 
08.
Set oRegex = New RegExp 
09.
oRegex.Global = True 
10.
oRegex.Pattern = "\+4\d{12}:" 
11.
 
12.
Set oFSO = CreateObject("Scripting.FileSystemObject") 
13.
sContent = oFSO.OpenTextFile(sInFile).ReadAll 
14.
Set oFile = oFSO.OpenTextFile(sOutFile, 2, True) 
15.
If oRegex.Test(sContent) Then 
16.
  Set colMatches = oRegex.Execute(sContent) 
17.
  For Each oMatch In colMatches 
18.
    oFile.WriteLine Mid(oMatch.Value, 2, 13) 
19.
  Next 
20.
End If 
21.
oFile.Close 
22.
 
23.
Set oFile = Nothing 
24.
Set oMatch = Nothing 
25.
Set colMatches = Nothing 
26.
Set oFSO = Nothing 
27.
Set oRegex = Nothing
Grüße
rubberman
Bitte warten ..
Mitglied: ozean
18.02.2013 um 10:07 Uhr
Hallo rubberman,

du bist echt super! Mein Respekt!
Funktioniert wunderbar.

Ich hätte so was selbst gar nicht geschafft.

dürfte ich dich noch was fragen?

ich habe mir überlegt, ob es evtl. besser wäre, die doppelten einträge gleich in den Script zu integrieren.
Dazu habe ich einen Ausschnitt hier im Forum gefunden, welcher genau das machen soll:

Ein = "D:\Datei.txt"
Aus = "D:\Unikate.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set d = CreateObject("Scripting.Dictionary")

ZeilenEin = Split(fso.OpenTextFile(Ein).ReadAll, vbCrLf)
For Each Zeile In ZeilenEin
If Not d.Exists(Zeile) Then d.Add Zeile, Dummy
Next

fso.CreateTextFile(Aus).Write Join(d.Keys, vbCrLf)
Ich habe das am Ende deines Scripts eingefügt und die Dateinamen angepasst, wobei als "Ein" die neuerstellte neu.txt und als "Aus" die EAN.txt eingegeben habe.

Das heißt, die neu.txt wäre als temporäre Datei.
Aber das hat nicht funktioniert. Wahrscheinlich müsste ich noch irgendwelche Variablen definieren.

die temporäre Datei soll am Ende auch gelöscht werden.

Köntest du mir sagen, wie ich diesen Ausschnitt in dein Script integriere und die temporäre Datei lösche?

Danke!
Bitte warten ..
Mitglied: rubberman
18.02.2013, aktualisiert um 17:42 Uhr
Hallo ozean.

Eine temporäre Datei ist nicht nötig. Das geht genauso on the fly.
01.
Option Explicit 
02.
 
03.
Const sInFile = "test.txt" 
04.
Const sOutFile = "EAN.txt" 
05.
 
06.
Dim oRegex, oFSO, oDict, oFile, colMatches, oMatch, sContent, sEan 
07.
 
08.
Set oRegex = New RegExp 
09.
oRegex.Global = True 
10.
oRegex.Pattern = "\+4\d{12}:" 
11.
 
12.
Set oFSO = CreateObject("Scripting.FileSystemObject") 
13.
sContent = oFSO.OpenTextFile(sInFile).ReadAll 
14.
Set oDict = CreateObject("Scripting.Dictionary") 
15.
If oRegex.Test(sContent) Then 
16.
  Set colMatches = oRegex.Execute(sContent) 
17.
  For Each oMatch In colMatches 
18.
    sEan = Mid(oMatch.Value, 2, 13) 
19.
    If Not oDict.Exists(sEan) Then oDict.Add sEan, vbNullString 
20.
  Next 
21.
End If 
22.
Set oFile = oFSO.OpenTextFile(sOutFile, 2, True) 
23.
oFile.Write Join(oDict.Keys, vbCrLf) 
24.
oFile.Close 
25.
 
26.
Set oFile = Nothing 
27.
Set oDict = Nothing 
28.
Set oMatch = Nothing 
29.
Set colMatches = Nothing 
30.
Set oFSO = Nothing 
31.
Set oRegex = Nothing
Falls nötig, darf sInFile = sOutFile sein

Grüße
rubberman
Bitte warten ..
Mitglied: ozean
19.02.2013 um 12:13 Uhr
Hallo rubberman,

ich danke dir ganz herzlich! Du hast mir sehr geholfen.
Das Script funktioniert 1A!!!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datum in Datei speichern und wieder auslesen
gelöst Frage von AndroxinBatch & Shell3 Kommentare

Moinsen, ich spiele gerade ein wenig mit der Powershell und Zeitstempeln rum: Zeitstempel mit Get-Date erstellen, als String in ...

Microsoft
Excel-Datei mit VBA speichern
gelöst Frage von 116408Microsoft6 Kommentare

Guten Tag Ich habe eine Excel-Datei, in der in D4 der Kundenname und in D11 das Projekt benennt wird. ...

VB for Applications
XML Datei auslesen mit Excel
Frage von kaiuwe28VB for Applications10 Kommentare

Hallo zusammen, ich mal wieder Leider komme ich nicht weiter. Ich möchte aus einem Ordner mit mehreren XML Dateien ...

Entwicklung
Aus einer XML-Datei mehrere Daten auslesen und in einer bestimmten Syntax in eine Excel-Datei speichern
gelöst Frage von LocXarEntwicklung2 Kommentare

Guten Tag, ich habe hier eine xml datei (ausschnitt am ende meines Posts) in der Daten aus einer Datenbank ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 19 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 23 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 5 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Windows 10
Probleme mit Dateien, deren Pfad + Dateiname länger als 256 Zeichen sind
Frage von FalaffelWindows 109 Kommentare

Guten Tag, unter Windows 10 scheint es immer noch das Problem zu geben, dass der Pfad + Dateiname einer ...