Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage als Text-Export mit Kopfzeile

Begonnen von Daniel1988, Juni 17, 2013, 16:03:34

⏪ vorheriges - nächstes ⏩

Daniel1988

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  :)


Daniel1988

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.

DF6GL

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")

Daniel1988

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?

daolix

#5
Hallo
hier mal ein anriss:
Code (Luftcode) [Auswählen]

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

Daniel1988

Das ist nett, vielen Dank!

Werd ich mal ausgiebig testen und anpassen  :)

Daniel1988

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!