Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

CSV zu TXT automatisiert mit Access

Frage Microsoft Microsoft Office

Mitglied: Stelli

Stelli (Level 1) - Jetzt verbinden

11.02.2011 um 08:38 Uhr, 4716 Aufrufe, 7 Kommentare

Moin,

hab ein etwas komplizierteres Problem:

Ich habe eine CSV Datei vorliegen mit Kontaktdaten. Hier stehen alle Informationen über bestimmte Mitarbeiter drin, von denen aber nur ein paar benötigt werden. Alle Attribute sind mit Semikolons getrennt. Wenn ich nun Access 2007 öffne und hier auf "öffnen" klicke und die CSV Datei auswähle, muss ich ihm in diesem Assistenten sagen, dass alle Spalten mit Semikolons getrennt sind und Access ordnet mir die Attribute in die richtigen Spalten. Insgesamt sind das 19 Stück. Von diesen 19 Spalten benötige ich aber nur 4 Stück. Also wähle ich nur die 4 Stück aus die ich benötige und fertig. Wenn ich jetzt manuell auf Export klicke und wähle aus, dass er mir diese 4 Spalten in eine txt Datei exportieren soll, kann ich ihm in diesem Export Assistenten sagen, dass ich die verschiedenen Spalten wieder mit Semikolons getrennt haben möchte. Export funktioniert.

Als Beispiel hier mal ein Datensatz aus der CSV:

Nachname;Vorname;Status;Vollständiger Name;E-Mail gesch;Telefon Gesch; Telefon privat;E-Mail Privat;Geschlecht;Geburtsdatum; usw usw usw...

Jetzt wollte ich das ganze automatisch ablaufen lassen...
Hierzu habe ich in Access ein Modul erstellt, das wie folgt aussieht:

Function autoexec()
On Error GoTo autoexec_Err
DoCmd.SetWarnings (Warningsoff)
DoCmd.TransferText acExportDelim, , "Kontakte", "C:\test.txt", True


autoexec_Exit:
Exit Function

autoexec_Err:
MsgBox Error$
Resume autoexec_Exit

End Function

Soweit so gut...
Jetzt habe ich ein Makro gebaut indem die Funktion autoexec ausgeführt wird...
Wenn ich das Makro starte, startet bekomme ich nun folgende Fehlermeldung: "Das Feldtrennzeichen für die angegebene Textdatei entspricht dem Dezimaltrennzeichen oder Texttrennzeichen"

Wenn ich nun meinen oben genannten Code nicht mit Semikolon sondern mit TABS exportieren lasse funktioniert es.. ich benötige aber Semikolons...

Weiß hier jemand Rat??

Vielen Dank

Gruß Stelli
Mitglied: bastla
11.02.2011 um 09:53 Uhr
Hallo Stelli!

Du hast also nur vor, aus der CSV eine TXT zu machen, ohne die Daten in Access zu bearbeiten? Falls ja, würde ich ganz einfach VBS dafür verwenden - ungetestet:
01.
CSV = D:\Deine Kontaktdaten.csv" 
02.
TXT = "D:\test.txt" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Satz = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLf) 'zeilenweise in Array einlesen 
07.
 
08.
Set TXTFile = fso.CreateTextFile(TXT) 
09.
For i = 0 To UBound(Satz) 
10.
    Feld = Split(Satz(i), Delim) 
11.
    TXTFile.WriteLine Feld(0) & Delim & Feld(1) & Delim & Feld(4) & Delim & Feld(5) 'nur benötigte Felder in die Textdatei schreiben 
12.
Next 
13.
TXTFile.Close 
14.
 
15.
WScript.Echo Ubound(Satz) + 1 & " Datensätze in """ & TXT & """ geschrieben."
Grüße
bastla
Bitte warten ..
Mitglied: Stelli
11.02.2011 um 10:32 Uhr
Hey danke für den Tipp,

habe es gleich mal ausprobiert. Kenne mich aber mit VBS nicht so wirklich aus. Wenn ich es jetzt starte bekommt ich die Fehlermeldung Objekt erforderlich. Eine Txt Datei wird angelegt. Allerdings hier auch mit den falschen Feldern und mit einem Leerschritt zwischen jedem Buchstaben und Zeichen.

Es kommt auch in der CSV vor dass mal ein Feld leer ist.. D.h. dass hier wo normalerweise eine telefonnummer zwischen zwei Semikolons Steht ( ;01711234567;) dann nur ein ;; steht. (wird das dann auch bei der Feldauswahl erkannt?)

CSV = "D:\Kontkate.csv"
TXT = "D:\test.txt"
Delim = ";"
Set fso = CreateObject("Scripting.FileSystemObject")
Satz = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLf) 'zeilenweise in Array einlesen

Set TXTFile = fso.CreateTextFile(TXT)
For i = 0 To UBound(Satz)

Feld = Split(Satz(i), Delim)

TXTFile.WriteLine Feld(1) & Delim & Feld(2) & Delim & Feld(7) & Delim & Feld(9)

Next

TXTFile.Close

WScript.Echo UBound(Satz) + 1 & " Datensätze in """ & TXT & """ geschrieben."
Bitte warten ..
Mitglied: bastla
11.02.2011 um 10:44 Uhr
Hallo Stelli!
mit den falschen Feldern und mit einem Leerschritt zwischen jedem Buchstaben und Zeichen.
"Falsche" Felder erhöltst Du, wenn Du vermutlich nicht die Feldnummer ab 0 gezählt hast /siehe mein Beispiel oben) - mit
01.
Nachname;Vorname;Status;Vollständiger Name;E-Mail gesch;Telefon Gesch; Telefon privat;E-Mail Privat;Geschlecht;Geburtsdatum; usw usw usw... 
02.
Nachname2;Vorname2;Status2;Vollständiger Name2;E-Mail gesch2;;;E-Mail Privat2;Geschlecht2;Geburtsdatum2; usw usw usw...
getestet sieht mein Ergebnis auch so aus:
01.
Vorname;Status;E-Mail Privat;Geburtsdatum 
02.
Vorname2;Status2;E-Mail Privat2;Geburtsdatum2
Wenn die Leerschritte tatsächlich zwischen allen einzelnen Zeichen auftauchen, könnte ev die CSV im Unicode-Format vorliegen - dann müsstest Du die Zeile 6 (zumindest in meinem Ansatz - bei Dir wird mangels "Code"-Formatierung ja keine Zeilennummer angezeigt) auf
Satz = Split(fso.OpenTextFile(CSV, 1, False, True).ReadAll, vbCrLf) 'zeilenweise in Array einlesen
ändern.

Wenn dann übrigens auch wieder Unicode geschrieben werden soll, wäre noch die Zeile 8 auf
Set TXTFile = fso.CreateTextFile(TXT, True, True)
anzupassen ...

Grüße
bastla
Bitte warten ..
Mitglied: Stelli
11.02.2011 um 11:23 Uhr
Vielen Dank funktioniert jetzt einwandfrei....

Hast du zufällig noch eine Lösung wie ich mehrere CSV Dateien einlesen und alles in eine TXT Datei bringen kann?
Bitte warten ..
Mitglied: bastla
11.02.2011 um 15:19 Uhr
Hallo Stelli!

Magst Du noch mehr über diese mehreren CSV-Dateien erzählen (wie etwa, wo/wie sie zu finden wären)?
Es gäbe übrigens eine ganz einfache Methode, alle Dateien eines Ordners mit einem CMD-Befehl zusammenzufassen (um dann stattdessen die Ergebnisdatei weiterzubearbeiten):
type D:\*.csv>D:\AlleKontakte.txt
Voraussetzung wäre hierfür nur, dass die jeweils letzte Zeile mit einer Zeilenschaltung endet.

Grüße
bastla
Bitte warten ..
Mitglied: Stelli
11.02.2011 um 15:27 Uhr
Also zur Zeit beläuft sich das ganz noch auf 1 CSV Datei die auf einem server liegt.. aber ich weiß schon, dass es demnächst wohl ein paar Dateien mehr geben wird die dann auch auf dem Server liegen werden... Möglich wäre dass sie in unterschiedlichen Ordnern liegen. und bevor ich anfange und alle txt dateien zusammenführen lasse wäre es ja ideal wenn das vbs programm einfach mehrere csv dateien einlesen und anschließend nach dem gleichen verfahren zusammen in eine txt datei schreibt...
Bitte warten ..
Mitglied: bastla
11.02.2011 um 15:37 Uhr
Hallo Stelli!

Wenn Du die Pfade kennst, ist das ja weiter kein Problem:
01.
AlleCSV = Array("D:\Kontkate.csv", "D:\Unterordner\Kontaktdaten2.csv", "D:\Textordner\Kontakt.txt") 
02.
TXT = "D:\test.txt" 
03.
Delim = ";" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set TXTFile = fso.CreateTextFile(TXT) 
07.
 
08.
For Each CSV In AlleCSV 
09.
    Satz = Split(fso.OpenTextFile(CSV).ReadAll, vbCrLf) 'zeilenweise in Array einlesen 
10.
 
11.
    Satzanzahl = Satzanzahl + UBound(Satz) + 1 
12.
    For i = 0 To UBound(Satz) 
13.
        Feld = Split(Satz(i), Delim) 
14.
        TXTFile.WriteLine Feld(1) & Delim & Feld(2) & Delim & Feld(7) & Delim & Feld(9) 
15.
    Next 
16.
Next 
17.
 
18.
TXTFile.Close 
19.
 
20.
WScript.Echo Satzanzahl & " Datensätze in """ & TXT & """ geschrieben."
Voraussetzung dafür ist natürlich, dass der Satzaufbau in allen Einzeldateien gleich ist ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Werte aus CSV in TXT - Powershell (20)

Frage von Komoran12 zum Thema Batch & Shell ...

Datenbanken
Automatisierter täglicher Import einer Access Datenbank in SQL (5)

Frage von RichterS zum Thema Datenbanken ...

Microsoft Office
Automatischer Datenimport aus csv Datei in Access DB - Wo zu ändern? (2)

Frage von Mejestic12 zum Thema Microsoft Office ...

Java
gelöst Net user per script aus txt oder csv für FTP (15)

Frage von OlliPWS zum Thema Java ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Seekrank bei Windows 10 (17)

Frage von zauberer123 zum Thema Windows 10 ...

Windows Server
gelöst Kopiervorgang schlägt fehl, weil Datei- und Ordnername zu lang sind (14)

Frage von Schroedi zum Thema Windows Server ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...