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

Mitglied: ozean

ozean (Level 1) - Jetzt verbinden

14.02.2013 um 10:22 Uhr, 1587 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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 14 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 14 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...