Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Datei-Export mit VBScript/VBA
#1
Sehr schön!

Ich hab auch grad mal ne frage zu dats
Muss so eine dat datei in unicode oder in ascii geschrieben sein?
Zitieren
#2
ASCHKII, aber UTF-8 in ASCII ist davon ununterscheidbar. Der Dateiname muss in dem gleichen Encoding sein, dass das Dateisystemverwendet. Damit das aber immer geht, empfiehlt sich hier auch Ascii.
Zitieren
#3
Zitat:Original von prissi
ASCHKII, aber UTF-8 in ASCII ist davon ununterscheidbar. Der Dateiname muss in dem gleichen Encoding sein, dass das Dateisystemverwendet. Damit das aber immer geht, empfiehlt sich hier auch Ascii.

Ich hab nämlich von FrankP die excel tabelle mit den Fahrzeugkostenberechnungen bekommen, und wollte jetzt ein Vbscript schreiben das mir eine dat daraus generiert. r geht das nicht, hat das schon jemand versucht?

Txt dateien generieren kann man jedenfalls laut Hilfe, in ASCII oder Unicode aber UTF 8? Keine Ahnung.
Zitieren
#4
In Access funktionierts mit VBA so

Code:
Sub Datei_schreiben(stDatei As String, strInhalt As String)
'Übergabe-Parameter
    'Dim stDatei As String, strInhalt As String
    
    Dim dateinummer As Integer

If stDatei = "" Then Exit Sub


If funcDateiTest(stDatei) = "nein" Then Exit Sub
    
dateinummer = FreeFile  ' neue Datei-Nr.
    
Open stDatei For Output As #dateinummer   ' Datei zur Ausgabe öffnen.

Print #dateinummer, strInhalt

Close #dateinummer    ' Datei schließen.

End Sub
Code:
Function funcDateiTest(stDatei)
    Dim Antwort

    If Dir$(stDatei) <> "" Then ' Meldung anzeigen.
        Antwort = MsgBox("Soll die Datei überschrieben werden?" & Chr(13) & Chr(13) & stDatei, 20, "Überschreib-Warnung " & Chr(187) & stDatei & Chr(171))   ' Meldung anzeigen.
        If Antwort = vbYes Then ' Benutzer hat auf "Ja" geklickt
            funcDateiTest = "ja"
        Else
            funcDateiTest = "nein" ' Benutzer hat auf "Nein" geklickt
        End If
     End If

End Function

Dabei wird der Prozedur Datei_schreiben der Dateiname stDatei mit dem kompletten Pfad und der zu schreibende Dateiinhalt strInhalt übergeben.
Der Dateiname kann gleich auf .dat enden.

Die Function funcDateiTest prüft, ob die Datei bereits existiert und fragt ggf nach, ob sie Überschrieben werden soll.

Den Dateiinhalt kannst Du folgendermaßen zusammensetzen

Code:
Dim  strDatInhalt As String

strDatInhalt = "# " & rst.Fields("text_name") & Chr$(10)
strDatInhalt = strDatInhalt & "obj=" & rst.Fields("obj") & Chr$(10)

rst.Fields("text_name") liest hier das Namensfeld aus einer Datenbanktabelle aus
rst.Fields("obj") liest das obj-Feld aus der Datenbanktabelle

Statt der Datenbanktabellenfelder musst Du die entsprechenden Felder der Exel-Tabellen angeben.
Für jeden weiteren Parametereintrag fügst Du die untere Zeile noch mal an.

Das Chr$(10) setzt den Zeilenumbruch.
Notedad zeigt zwar alles in einer Zeile an, aber WordPad und ander Editoren zeigens richtig an.
Wenn Dich das stört, kannst Du noch ein & CHR$(13) an die Zeilen anhängen.

Eine so exportierte Dat-Datei häng ich mal an.
Zitieren
#5
Hehe gibt wohl nicht Vieles das der Frank noch nicht gemacht hat Big Grin

Hab leider Grad gar keinen Hirnlappen frei um das alles nachzuvollziehen (fühl mich grad als hätt ich gestern Koma-Saufen probiert - hab ich aber nich), aber ich werds mir demnächst genauer angucken.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste