Hallöchen!
Ich habe mir (als Anfänger) eine relativ umfangreiche Access-Tabelle zur Preiskalkulation und Bestandsabfrage gebastelt. Eine zusammenfassende Abfrage mit rund 60.000 Zeilen möchte ich tabstopp-getrennt und mit Punkten als Dezimaltrennzeichen sowie keinen Anführungsstrichen bei Textfeldern in eine Textdatei exportieren.
Soweit funktioniert dies auch mit dem Exportassissten wie gewünscht, leider fehlt der Textdatei aber noch eine zusätzliche Textzeile über den Spaltenbezeichnungen. Dies lässt sich, wie ich mittlerweile überall gelesen habe, auch nicht durch den Assissten bewerkstelligen.
Leider habe ich keinerlei VBA-Kenntnisse, sodass ich auch teilweise hier gepostete Prozeduren nicht passend zu meinen Bedürfnissen umschreiben kann.
Gibt es hierfür vielleicht eine relativ einfache Lösung, abgesehen von der manuellen Nachbearbeitung der Textdatei?
Für jeden Tipp bin ich sehr dankbar :)
Hallo,
und was soll in dieser zusätzlichen Textzeile denn stehen?
Hallöchen,
muss mich da korrigieren, es müssen zwei extra Zeilen sein, in denen einfacher nur ein fester Text steht wie beispielsweise Template Version X vom 01.01.13, in der zweiten Zeile tauchen die Spaltennamen noch einmal in einer anderen Fassung/Sprache auf. Diese wird daher sehr lang, da es sich um circa 20 Spalten handelt.
Diese beiden Schritte sind notwendig damit die exportierte Text-Datei durch andere Programme als Vorlage erkannt wird.
Hallo,
das wird etwas aufwändiger...und der Access-Textexport leistet das allein so nicht.
Du könntest die eigentliche CSV-Datei mit dem Access-Textexport erzeugen und mit VBA die zwei anfänglichen Zeilen an die CSV-Datei voranstellen.
(Mit VBA.Print die ersten beiden Zeilen in eine Datei schreiben und die Zeilen aus der CSV-Datei mit "Line Input" lesen und an die Datei anhängen (quasi kopieren))
Alternativ könnte die gesamte CSV-Datei via VBA generiert werden. (Siehe unter dbwiki.net "Eigenen Textexport schreiben")
Den "eigenen Textexport schreiben" hatte ich hier bereits im Forum als Tipp gefunden aber leider kaum verstanden, da eben die Programmierkenntnisse fehlen.
Der Teil mit dem Text kopieren klingt da für mich schon ein wenig einfacher, gibt es da vielleicht irgendwo ein paar kleine Anleitungen, mit denen man ein wenig rumprobieren kann?
Hallo
hier mal ein anriss:
Private Sub IrgendEinButton_Click()
dim ff as integer
dim sout as string
dim scsv as string
dim sFilePath as string
sFilePath = "LW:\Path\File.csv"
'exportiere Hier deine csv mit den Accessbordmittel als sFilePath
'erstelle deinen Kopf
sKopf = "Das ist die erste Kopfzeile" & vbCrLf & _
"Das ist die zweite Kopfzeile." & vbCrLf
ff = FreeFile 'jib mal ne freie Dateinummer
open sFilePath for binary as #ff 'Öffne Datei im Binärmodus
scsv=String$(LOF(ff), 0) 'Erstelle Buffer mit der Größe der datei
get #ff, , scsv 'lese dateiinhalt in den Buffer
seek #ff, 1 'Schieb den Zeiger an den Anfang der Datei
put #ff, , skopf 'Schreib den Kopf in die Datei
put #ff, , scsv 'schreib den ursprünglichen Inhalt der CSV zurück
Close #ff 'mach mal zu
end Sub
Das ist nett, vielen Dank!
Werd ich mal ausgiebig testen und anpassen :)
Guten Morgen Zusammen,
die Lösung von Dir daolix war insgesamt für meine Situation nicht so passend, da der Header durch die Länge nicht so recht wollte wie ich.
Aber mit deinem Code konnte ich mir die ganze Sache super zusammenschustern, dass Access nun die zwei Kopfzeilen aus einer festen TXT-Datei zieht und einfach an die exportierte Datei oben anhängt. Ist vielleicht sogar noch besser, da man dadurch die Header-Vorlage jederzeit einfach anpassen oder ersetzen kann, bei Bedarf.
Vielen Dank nochmal!