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
GELÖST

Access 2007 nach CSV

Frage Microsoft Microsoft Office

Mitglied: CeMeNt

CeMeNt (Level 2) - Jetzt verbinden

24.09.2009 um 15:38 Uhr, 4916 Aufrufe, 11 Kommentare

Ich benötige eine zweizeilige CSV-Datei

Moin Leute,

ich habe mir einen Access 2007 Bericht zusammengestellt, der ungefähr so aussieht:


B 2 SA 24.09.2009 411000
K 52 0912345

B 2 SA 24.09.2009 456500
K 52 0923456

B 2 SA 24.09.2009 478901
K 52 0934567


Wobei die Zeile B und Zeile K jeweils einen Datensatz darstellen.

Soweit so gut.

Nun möchte ich das in irgendeiner Form in eine CSV-Datei exportieren, die Semikolon-getrennt ist und genau das obige Format hat (also mit B-Zeile und K-Zeile).

Ich habe schon alle möglichen Export-Varianten ausprobiert, aber in der CSV stehen B-Zeile und K-Zeile immer in einer Reihe, ungefär so:



B 2 SA 24.09.2009 411000 K 52 0912345

B 2 SA 24.09.2009 456500 K 52 0923456

B 2 SA 24.09.2009 478901 K 52 0934567

Hat jemand wohl eine Idee, wie ich eine zwei-zeilige CSV erstellen kann?
Gerne auch über den Umweg erst in Excel und von dort nach CSV...

Danke, Gruß

CeMeNt
Mitglied: 76109
24.09.2009 um 17:03 Uhr
Hallo CeMeNt!

Das kann man relativ einfach über Batch oder VB-Script konvertieren. Allerdings bedarf es dazu genauere Angaben.

Was steht jetzt in einer Zeile: Spalte von bis?

Zeile 1 soll sein: Spalte von bis?
Zeile 2 soll sein: Spalte von bis?

Gruß Dieter
Bitte warten ..
Mitglied: CeMeNt
24.09.2009 um 17:45 Uhr
Hallo Dieter,

über VB-Script hatte ich mir das schon fast gedacht. Nur leider fehlen mir dazu die Kenntnisse.
Grundlegende VBA-Kentnisse sind zwar vorhanden, aber das hier übersteigt leider mein Wissen...

Also, die erste Zeile soll aus insgesamt 16 Spalten bestehen,
die zweite enthält dann nur noch vier Spalten (jeweils von Spalte A)

Vermutlich braucht man dann noch die exakten Feldnamen, nicht wahr?
Die werde ich allerdings erst morgen haben, da ich heute nicht mehr dazu kommen werde.

Aber danke schon mal,

Gruß CeMeNt
Bitte warten ..
Mitglied: 76109
24.09.2009 um 17:58 Uhr
Hallo CeMeNt!

OK, an die Feldnamen hatte ich noch garnicht gedacht, aber die werden einfach in einem Array definiert und in Zeile 1 geschrieben.

Gruß Dieter
Bitte warten ..
Mitglied: 76109
24.09.2009 um 19:09 Uhr
Hallo CeMeNt!

Hier mal ein VB-Script (*.vbs) zum testen.

Die Konstanten Path und Feldnamen entsprechend anpassen:
01.
Option Explicit 
02.
 
03.
Const Path = "X:\Test\Test.csv" 
04.
 
05.
Const F01 = "A"     'Feldnamen 
06.
Const F02 = "B" 
07.
Const F03 = "C" 
08.
Const F04 = "D" 
09.
Const F05 = "E" 
10.
Const F06 = "F" 
11.
Const F07 = "G" 
12.
Const F08 = "H" 
13.
Const F09 = "I" 
14.
Const F10 = "J" 
15.
Const F11 = "K" 
16.
Const F12 = "L" 
17.
Const F13 = "M" 
18.
Const F14 = "N" 
19.
Const F15 = "O" 
20.
Const F16 = "P" 
21.
 
22.
Const MsgMld = "Konvertierung beendet." 
23.
Const MsgErr = "Datei nicht gefunden!" 
24.
 
25.
Dim Fso, File, Text, Feld, Line, Z, Z1(15), Z2(3), i 
26.
     
27.
Feld = Array(F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F11, F12, F13, F14, F15, F16) 
28.
 
29.
Set Fso = CreateObject("Scripting.FileSystemObject") 
30.
 
31.
If Fso.FileExists(Path) = False Then MsgBox MsgErr, vbExclamation, "Fehler":  WScript.Quit 
32.
 
33.
Text = Split(Fso.OpenTextFile(Path).ReadAll, vbCrLf) 
34.
 
35.
Set File = Fso.CreateTextFile(Path) 
36.
 
37.
File.WriteLine Join(Feld, ";") 
38.
 
39.
For Each Line In Text 
40.
    Z = Split(Line, ";") 
41.
    If UBound(Z) >= 19 Then 
42.
        For i = 0 To UBound(Z1):  Z1(i) = Z(i):  Next 
43.
        File.WriteLine Join(Z1, ";") 
44.
        For i = 0 To UBound(Z2):  Z2(i) = Z(i + 16):  Next 
45.
        File.WriteLine Join(Z2, ";") 
46.
    End If 
47.
Next 
48.
 
49.
File.Close 
50.
 
51.
MsgBox MsgMld, vbInformation, "Meldung"
Gruß Dieter

PS. Wenn die *.Csv-Datei nur in Excel importiert werden soll, dann wäre ein VBA-Code wohl effektiver?
Bitte warten ..
Mitglied: CeMeNt
25.09.2009 um 07:53 Uhr
Guten Morgen Dieter!

Vielen Dank! Den Code werde ich gleich mal testen.
Ich sag dann mal Bescheid, wie es gelaufen ist, bzw. wenn ich etwas nicht hinbekomme.

Zwecks Excel habe ich mich vielleicht etwas falsch ausgedrückt.
Die CSV soll am Ende in unsere FIBU eingelesen werden. Excel ist dafür (eigentlich) nicht nötig.
Ich hätte es dann nur als Hilfsmittel verwendet, um die CSV zu erzeugen.

Bis später,

Gruß CeMeNt
Bitte warten ..
Mitglied: CeMeNt
25.09.2009 um 08:27 Uhr
Sooo, da bin ich noch mal.
Ich hab das jetzt folgendermaßen gemacht:

- Deinen Quellcode kopiert, und als "Convert.vbs" abgespeichert.
- Eine csv erzeugt, die einen Datensatz in einer Zeile abbildet
- Feldnamen und Pfade in der vbs angepasst
- vbs gestartet

Am Ende steht "Konvertierung beendet"

Aus meiner csv, die vorher aus rund 4000 Zeilen bestand, wurde eine einzige Zeile, die nur noch aus den Feldnamen besteht.

Da ging wohl irgendwas daneben - nur weiß ich leider nicht, was.

Was ich vorallem noch nicht ganz verstanden habe:
In Deinem VBS-Code fehlen doch eigentlich noch die Spalten 17 - 20 (die ja quasi per Zeilenumbruch in die jeweils zweite Zeile geschrieben werden sollen)

Aber vielleicht können wir ja auf dieser Basis etwas anders vorangehen?
z.B. so:

Gegeben sei eine CSV (semikolongetrennt), die aus 20 Spalten (und knapp 4000 Zeilen) besteht.
Nun soll die CSV so umformatiert werden, dass die letzten 4 Spalten in die zweite Zeile umgebrochen werden.

Das Ergebnis ist dann eine CSV, die aus knapp 8000 Zeilen besteht.

Wäre klasse, wenn Du noch einmal Zeit und Lust hättest, mir zu helfen.
Alle anderen, die hier zufällig vorbeischauen, sind natürlich auch herzlich eingeladen, hier mitzuknobeln.

Danke schon mal.

CeMeNt
Bitte warten ..
Mitglied: 76109
25.09.2009 um 09:46 Uhr
Guten Morgen CeMeNt!

Genauso, wie Du es beschrieben hast, sollte es eigentlich funktionieren.

Mein Test mit Zeilen in dieser Form:
A;B;C;D;E;F;G;H;I;K;L;M;N;O;P;Q;R;S;T
ergibt:
A;B;C;D;E;F;G;H;I;K;L;M;N;O;P
Q;R;S;T

In Zeile 39-47, werden alle Spalten in die Variable Z geschrieben und aufgeteilt in Z1 = 16 Spalten und Z2 = 4 Spalten. Oder habe ich doch was falsch verstanden.

Ist Dein ursprüngliches Cvs-Format enventuell UTF8 oder so. Kopiere mal eine Orignal-Zeile in einen normalen Texteditor und schau ob der Text normal aussieht.

Gruß Dieter
Bitte warten ..
Mitglied: CeMeNt
25.09.2009 um 10:58 Uhr
Super! Wir kommen der Sache näher!

In meiner Ausgabe-Datei waren nicht exakt 20 Spalten.
Solche Zeilen werden dann einfach gelöscht!

Hab aber meine Abfrage geändert. Nun sind es immer 20...

Die letzte Kleinigkeit:
In der konvertierten CFG stehen die Feldnamen.
Bekommt man die noch weg? Denn sonst kann das FIBU-Programm mit der Datei leider nichts anfangen.

Danke schon mal! Echt Super!!

Gruß CeMeNt
Bitte warten ..
Mitglied: 76109
25.09.2009 um 11:16 Uhr
Hallo CeMeNt!

Verstehe ich nicht ganz?

Heißt das jetzt, dass in die 1. Zeile keine Feldnamen geschrieben werden sollen?

Wenn ja, dann Codezeilen 5-20 und 27 und 37 entfernen.

Gruß Dieter
Bitte warten ..
Mitglied: CeMeNt
25.09.2009 um 11:46 Uhr
Super! Perfekt!!
Vielen Dank!

Ok, ich geb's zu. Das mit den Feldnamen habe ich ja selbst ins Spiel gebracht. Sorry!
Nein, ich brauche keine Feldnamen in der ersten Zeile.

Aber nach Deiner ersten Antwort, wusste ich ja noch nicht, was kommen wird.
Dachte halt, dass Du irgendwas direkt im Access schreiben würdest.
Dann hätte man bestimmt die Feldnamen benötigt.

Aber so ist ja alles noch viel einfacher! Und jetzt funktioniert es genauso, wie gewünscht!

Danke noch mal und ein schönes Wochenende!

CeMeNt
Bitte warten ..
Mitglied: 76109
25.09.2009 um 11:57 Uhr
Hallo CeMeNt!

Gern geschehen

Dann sind ja soweit alle Unklarheiten beseitigt und wünsche ich Dir auch ein schönes WE

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Access 2007 (2)

Frage von Everest zum Thema Microsoft Office ...

Datenbanken
Access Checkbox mit Kombifeld und dann filtern

Frage von atomas42 zum Thema Datenbanken ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
CMD cURL Access Token parsen (2)

Frage von maddig zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...