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

Werte aus txt-File in Excel einlesen

Frage Entwicklung VB for Applications

Mitglied: manuel5

manuel5 (Level 1) - Jetzt verbinden

09.03.2008, aktualisiert 19:57 Uhr, 8315 Aufrufe, 8 Kommentare

Hallo mal wieder,

folgendes Problem --> habe ein TXT-File in welchen viele viele Daten angegeben sind - die Werte sind so aufgebaut -->

?FELDBEZEICHNUNG FELDINHALT FEHLERTEXT
"?FIRMENNUMMER (MANDANT) " 11111
"?KUNDENNUMMER " 1111
"?KUNDENINDEX " 0
"?LIEFERUNGS-/LEISTUNGSDATUM " 20080229
"?FIRMENNUMMER (MANDANT) " 22222
"?KUNDENNUMMER " 2222
"?KUNDENINDEX " 0
"?LIEFERUNGS-/LEISTUNGSDATUM " 20080229
"?FIRMENNUMMER (MANDANT) " 11111
"?KUNDENNUMMER " 112211
"?KUNDENINDEX " 0
"?LIEFERUNGS-/LEISTUNGSDATUM " 20080229
"?FIRMENNUMMER (MANDANT) " 33333
"?KUNDENNUMMER " 1212
"?KUNDENINDEX " 0
"?LIEFERUNGS-/LEISTUNGSDATUM " 20080229

nun mein Problem - ich wuerde die Daten gerne so einlesen das er mir nur die Daten des Lieferanten 1212 einliesst (Dieser kommt in dem Text-File öfter vor) UND die Daten die jetzt links stehen --> KUNDENNUMMER ; FIRMENNUMMER (MANDANT) etc als Spaltenüberschriften nimmt.

Das einlesen einer Textdatei in Excel ist das kleinste Problem - simple everst!

Aber das umsteigen von der Zellen"Überschrfit" in ne Spalten"Überschrift" -- keine Ahnung und auch das er mir nur die Werte des KUNDEN 1212 ins Excel übergibt.

Und die Feldbezeichnung Feldinhalt und Fehlertext sollte dann lnks in den Zellen stehen...


HAt da jemand ne Idee zu?

Gruß Manuel
Mitglied: bastla
09.03.2008 um 16:18 Uhr
Hallo manuel5!

So ganz klar sind mir Deine Ausgangsdaten und auch Dein Vorhaben nicht - wie ich das zu verstehen meine, würde sich aus Deinem angeführten Beispiel unter Berücksichtigung der Forderung, nur Daten mit "?KUNDENNUMMER " 1212 zu verwenden, etwa folgende Exceltabelle ergeben:

ABCDE
1FELDBEZEICHNUNGFIRMENNUMMER (MANDANT)KUNDENNUMMERKUNDENINDEXLIEFERUNGS-/LEISTUNGSDATUM
2FELDINHALT333331212020080229
3FEHLERTEXT

Entspricht dies Deiner Zielvorstellung? Falls nein, versuche doch bitte, die gewünschte Anordnung ebenfalls tabellarisch (siehe dazu die "Formatierungs-Hilfe" in "Häufige Fragen" bzw beim Erstellen eines Kommentars) darzustellen.

Auch der Inhalt der Textdatei wird mit einer anderen Formatierung (verwende dazu <code>-Tags) leichter nachvollziehbar.

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
09.03.2008 um 16:33 Uhr
Ja, sorry - genaus solls aussehen

AB CD EF GH
1FELDBEZEICHNUNG FIRMENNUMMER (MANDANT) KUNDENNUMMER KUNDENINDEX LIEFERUNGS-/LEISTUNGSDATUM FEHLER
2 Feldbezeichnung 333331212020080229Formal fehlerhaft
3



also ich brauch die "Spalten" aus dem Texfile in Zellen untereinander im Excel

Gruß Manuel
Bitte warten ..
Mitglied: bastla
09.03.2008 um 16:39 Uhr
Hallo manuel5!

Woher kommt "Formal fehlerhaft" (und wozu brauchst Du eigentlich die erste Spalte - hier würde sich ja eigentlich ohnehin nur immer der Text "Feldbezeichnung" wiederholen)?

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
09.03.2008 um 17:05 Uhr
Stimmt die erste Spalte kann man knicken

Das "Formal fehlerhaft" kommt eigentlich in der Spalte weit unten - Hier gehts um Belege welche eben hier auschlaggebend sind

Ein Beleg sieht im ganzen so aus -->

?FELDBEZEICHNUNG FELDINHALT "FEHLERTEXT
?* Beleg " "
"?FIRMENNUMMER (MANDANT) " 10
"?Firmennummer " 1212
"?FirmenINDEX " 0
"?LIEFERUNGS-/LEISTUNGSDATUM " 20080219
"?UMSATZSTEUERTYP " DEUTSCHE
"?FAELLIGKEIT " 20080325
"?LEISTUNGSKENNZIFFER (LZB) "
"?VORGANG " GKLIE
"?WAEHRUNG " EUR
"?KURS "
"?WAREN-/LEISTUNGSWERT " 1.500
"?FRACHTWERT " 0
"?VERPACKUNGSWERT " 0
"?UMSATZSTEUERWERT " 1,5
"?RECHNUNGSENDWERT " 10,8
"?SKONTOWERT "
"?SKONTOSATZ "
"?SKONTOANGEBOT-SATZ " 0
"?SKONTOANGEBOT-FRIST " 0
"?BARCODENUMMER " #22222222222
"?AUFTRAGSNUMMER " 111111111
"?LIEFERSCHEINNUMMER "
"?VORLAEUFIGE FREIGABE "
"?SPERRNUMMER "
"?REFERENZ " 26584
"?DFUE-KENNUNG " NORM=INVOICD 96ADATE=2008022918292677
"?DFUE-DATUM " 20080229
"?BestellNUMMER " ???????? _________________________________________ FORMAL FEHLERHAFT

Dann faengst wieder von vorne an mit -->

?FELDBEZEICHNUNG FELDINHALT "FEHLERTEXT
?* BELEG "
"?FIRMENNUMMER (MANDANT) " 10
"?FirmenNUMMER " 1213
..
.
..
.
..
.
..


uns so weiter - s geht über ca 200 Belege im Word-Doc sinds ca 230 Seiten

Ist schwer zu erklären - ich könnte dir das txt-File per Mail zukommen lassen.

Gruß Manuel
Bitte warten ..
Mitglied: bastla
09.03.2008 um 18:13 Uhr
Hallo manuel5!

Ein Excel-Makro zur Umsetzung Deines Vorhabens könnte etwa so aussehen:
01.
Option Explicit 
02.
 
03.
Sub Einlesen() 
04.
 
05.
Dim Kunde As String, Kundenfeld As Integer, Feldauswahl(), Feldbezeichnungen() 
06.
Dim fso As Object, TextDatei As Object, Felder() As String, Zeile As Integer, i As Integer, Daten() As String 
07.
 
08.
'####### Anpassungen ####### 
09.
Const Datei As String = "D:\Datei mit Buchungen.txt" 
10.
 
11.
Kunde = "1212" 'nur Daten dieses Kunden übernehmen ("" für: alle Kunden) 
12.
Kundenfeld = 4 'Lfd (Zeilen-)Nummer des Feldes mit der Kundennummer lt Textdatei 
13.
 
14.
Feldbezeichnungen = Array("FIRMENNUMMER (MANDANT)", "KUNDENNUMMER", "KUNDENINDEX", "LIEFERUNGS-/LEISTUNGSDATUM", "FEHLER") 
15.
Feldauswahl = Array(3, 4, 5, 6, 30) 'Lfd (Zeilen-)Nummer des in die Tabelle einzutragenden Feldes 
16.
 
17.
Zeile = 1 'Zeilennummer für Spaltenüberschriften 
18.
 
19.
Const Header As String = "?FELDBEZEICHNUNG FELDINHALT ""FEHLERTEXT" 'erstes Feld jeden Datensatzes 
20.
Const FeldAnzahl As Integer = 30 'Feldanzahl je Datensatz 
21.
'####### Anpassungen Ende ####### 
22.
 
23.
 
24.
For i = 0 To UBound(Feldbezeichnungen) 
25.
    Cells(Zeile, i + 1).Value = Feldbezeichnungen(i) 
26.
Next 
27.
Zeile = Zeile + 1 
28.
 
29.
Set fso = CreateObject("Scripting.FileSystemObject") 
30.
Set TextDatei = fso.OpenTextFile(Datei, 1) 
31.
 
32.
If Not TextDatei.AtEndOfStream Then 
33.
    Do 
34.
        ReDim Felder(FeldAnzahl) 'Array für neuen Datensatz löschen 
35.
        Felder(1) = TextDatei.ReadLine 
36.
        If UCase(Felder(1)) = UCase(Header) Then 'Datensatz gefunden 
37.
            For i = 2 To FeldAnzahl 
38.
                If Not TextDatei.AtEndOfStream Then 
39.
                    Daten = Split(TextDatei.ReadLine, """") 
40.
                    Felder(i) = Trim(Daten(UBound(Daten))) 
41.
                Else 
42.
                    MsgBox "Datensatz nicht vollständig!", vbExclamation, "Datenfehler" 
43.
                    Exit Do 
44.
                End If 
45.
            Next 
46.
            If InStr(1, Felder(Kundenfeld), Kunde, vbTextCompare) Then 'nur Daten des vorgegebenen Kunden eintragen 
47.
            'If Felder(Kundenfeld) = Kunde Then 'Daten nur bei exakter Übereinstimmung eintragen 
48.
                For i = 0 To UBound(Feldauswahl) 'vorgegebene Felder in Tabelle eintragen 
49.
                    Cells(Zeile, i + 1).Value = Felder(Feldauswahl(i)) 
50.
                Next 
51.
                Zeile = Zeile + 1 
52.
            End If 
53.
        End If 
54.
    Loop Until TextDatei.AtEndOfStream 
55.
Else 
56.
    MsgBox "Die Datei " & Datei & " enthält keine Daten!", vbExclamation, "Keine Daten gefunden!" 
57.
End If 
58.
TextDatei.Close 
59.
End Sub
Zur Verwendung: Erstelle eine neue Excel-Mappe, wechsle über Rechtsklick auf das Blattregister "Tabelle1" und die Auswahl "Code anzeigen" in den VBA-Editor und füge dort das Makro in das große Codefenster ein.

Die Zeilen zwischen " Anpassungen " und " Anpassungen Ende " enthalten die Vorgaben, welche Du zunächst überprüfen und (zumindest hinsichtlich des Dateinamens) anpassen musst.

Die Einschränkung auf eine vorgegebene Kundennummer (im Beispiel "1212") erfolgt in dieser Version so, dass geprüft wird, ob die eingelesene Kundennummer den Suchbegriff enthält - daher würden auch Datensätze des Kunden "12125" erfasst. Falls Du auf eine genaue Übereinstimmung überprüfen willst, musst Du das Apostroph (') vor der Zeile
01.
'If Felder(Kundenfeld) = Kunde Then 'Daten nur bei exakter Übereinstimmung eintragen
entfernen und vor die vorherige Zeile
01.
If InStr(1, Felder(Kundenfeld), Kunde, vbTextCompare) Then 'nur Daten des vorgegebenen Kunden eintragen
setzen.

Starte das Makro, indem Du den Cursor an eine beliebige Position zwischen "Sub Einlesen()" und "End Sub" setzt und "F5" drückst oder die grüne "Play"-Schaltfläche in der Symbolleiste anklickst - das sollte es eigentlich gewesen sein ...

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
09.03.2008 um 19:29 Uhr
Hallo bastla,

das schaut sich schon sehr gut aus - er macht mir zumindst schon mal die Überschriften

Was er aber nicht macht is - Wenn AUFTRAGSNUMMER FORMAL FEHLERHAFT das trage mir in Zeile 1 in Spalte A die Firmennummer/Kundennummer ein in Zeile 1 Spalte B die Kundenummer usw ein
Duchsuche den nächsten Beleg der bei ?FELDBEZEICHNUNG FELDINHALT "FEHLERTEXT wieder beginnt und Wenn AUFTRAGSNUMMER FORMAL FEHLERHAFT das trage mir in Zeile 2 in Spalte A die Firmennummer/Kundennummer ein in Zeile 2 Spalte B die Kundenummer usw ein
wenn nicht trage nichts ein und gehe zum nächsten Beleg

Da haperst noch nStück, aber es wird )

Gruß Manuel
Bitte warten ..
Mitglied: bastla
09.03.2008 um 19:36 Uhr
Hallo manuel5!

Seit wann soll denn "AUFTRAGSNUMMER FORMAL FEHLERHAFT" das Kriterium für das Eintragen eines Datensatzes sein?

However - wenn Du die Zeilen
01.
Kunde = "1212" 'nur Daten dieses Kunden übernehmen ("" für: alle Kunden) 
02.
Kundenfeld = 4 'Lfd (Zeilen-)Nummer des Feldes mit der Kundennummer lt Textdatei
durch
01.
Kunde = "FORMAL FEHLERHAFT" 
02.
Kundenfeld = 23
ersetzt, sollte es auch damit klappen (vorausgesetzt, die Struktur Deiner Textdatei entspricht dem oben angegebenen Beispiel und es ist mit "AUFTRAGSNUMMER" die Zeile 23 gemeint) ...

Grüße
bastla
Bitte warten ..
Mitglied: manuel5
09.03.2008 um 19:57 Uhr
HAllo bastla,

hmmmm - genau das is das Problem auch - die Belege bzw die Felder sind nicht immer "gleich viele"
Kann man da nicht sagen - Fange bei ?FELDBEZEICHNUNG FELDINHALT "FEHLERTEXT an und dann suche ob AUFTRAGSNUMMER FORMAL FEHLERHAFT wenn ja -->

dann trage mir in Zeile 1 in Spalte A die Firmennummer/Kundennummer ein in Zeile 1 Spalte B die Belegnummer usw ein dann gehe zum nächsten ?FELDBEZEICHNUNG FELDINHALT "FEHLERTEXT und ob hier bei AUFTRAGSNUMMER FORMAL FEHLERHAFT dann trage mir in Zeile 2 in Spalte A die Firmennummer/Kundennummer ein in Zeile 2 Spalte B die Kundenummer usw ein

Was noch gehen könnte wäre - Wenn AUFTRAGSNUMMER = Formal fehlerhaft dann gehe hoch bis Kundennummer -- nimm diese und trage sie ein dann die Rechnungsnummer/Belegnummer und trage sie ein.....


Das grundsätzlich wie ich vorgehen soll/kann ist mit n Rätsel.

Gruß Manuel
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

Microsoft Office
gelöst CSV-Datei mit einem VBA Makro in Excel einlesen und leicht anpassen (5)

Frage von JoSiBa zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...