Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Export MS-DOS

20 views
Skip to first unread message

Frank Schulze

unread,
Feb 5, 2000, 3:00:00 AM2/5/00
to
Hallo zusammen!

Ich muss Tabellen in einen Text (OS/2 oder MS-DOS) exportieren.
Wenn ich dies manuell durchfuehre auch kein Problem.
Das Ganze funktioniert unter VBA leider nicht mehr so toll:

Sobald ein Komma im Datensatz auftaucht, wird dieser in
Anfuehrungszeichen gesetzt und die kann ich beim besten Willen nicht
gebrauchen. Und da diese Konvertierung sehr oft durchgefuehrt werden
muss, kommt nur eine VBA-Loesung in Frage.
Gibt es eine??

PS: Die Print-Loesung hilft mir nicht weiter, da ich hiermit leider
nicht das MS-DOS-Format einstellen kann :(.
Oder hab ich was uebersehen??
--

Gruss Frank

F_Sc...@gmx.de (Standard)
FSch...@onlinehome.de

Ulli Tolksdorf

unread,
Feb 5, 2000, 3:00:00 AM2/5/00
to
Hi!!

VBA hilft dir schon weiter......
du mußt halt nur "sagen", was du wirklich willst.
mit dem autoexport per Menü wird das automatisch gemacht,
mit vba mußt du es dem halt erzählen
dabei hilft dir u.U. der Befehl Format() weiter in VBA der schreibt das
datum, so, wie du es möchtest. z.b.
die "print-lösung" ist schon ok. da du programmierst, mußt du halt etwas
genauer programmieren (eine eigenheit des programmierens, woher soll der
rechner auch wissen, was du willst *smile*)

wie tritt denn dein kommaproblem auf??

bye
Ulli.

Frank Schulze schrieb:

--
Microsoft MVP für Excel

Frank Schulze

unread,
Feb 6, 2000, 3:00:00 AM2/6/00
to
Hi Ulli,

Ich werd mich mal bemühen, mein Problem deutlicher zu machen:
Folgende Bsp.-Zeilen im Windows(ANSI)-Format in Spalte 'A' seien gegeben
(Es gibt Zeilen mit und ohne Kommata) :

0018Name: Baunsbergstr. Kassel
002Trend Records ,Baunsbergstr. 63 ,Kassel
003Kurbad Apotheke ,Baunsbergstr. 46 ,Kassel
004Boutique Freude ,Baunsbergstr. 44 ,Kassel
...
1608Name: Wilh. Allee 201-161 Kassel
161Schörling Elektroinst. ,Wilh. Allee 177 ,Kassel
162Wäscherei Naundorf ,Wilh. Allee 177 ,Kassel

Jetzt muessen diese Zeilen in eine Textdatei gespeichert werden.
Da zum Anlegen bzw Bearbeiten der Datensaetze mit dem
Windows-Zeichensatz gearbeitet wird, muessen diese Datensaetze im
(OS/2,MS-DOS)-Zeichensatz gespeichert werden. Dies wird vom Empfaenger
(Unix-Systeme) so verlangt. Was ueber die Oberflaeche mit Speichern
unter... (Text (OS/2 oder MS-DOS)(*.txt)) perfekt funktioniert, hat VBA
anscheinend die Eigenart, das es zB. die Zeilen 002-004,161-162 in
Anfuehrungszeichen setzt - also Zeilen, in denen Kommata vorkommen.
Und ich finde keine Moeglichkeit dieses zu verhindern

folgende Versuche habe ich probiert

1.
Sub Speichern()
Dim Tourname As String, Zeile As Integer

Tourname = "c:\eigene Dateien\Touren\" & ActiveSheet.Name
Open Tourname For Output As #1
Zeile = 1
Do Until ActiveSheet.Cells(Zeile, 1) = ""
Datensatz = Format(Zeile, "000") & ActiveSheet.Cells(Zeile, 1)
Print #1, Datensatz
Zeile = Zeile + 1
Loop
Close #1
End Sub

Keine Anfuehrungszeichen, aber leider weiterhin im ANSI-Format

2.
Sub Speichern()
Dim Tourname As String

Tourname = Application.GetSaveAsFilename(, "Text (OS/2 oder MS-DOS)(*.txt), *.txt)")
ActiveWorkbook.SaveAs Tourname, xlTextMSDOS
End Sub

Konvertierung funktioniert, aber obiges Problem: Anfuehrungszeichen
sobald ein Komma im Datenastz vorkommt.

Ich hoffe es wird jetzt etwas klarer.
--

Gruss Frank

F_Sc...@gmx.de (Standard)
FSch...@onlinehome.de


Ulli Tolksdorf <stud...@berg.net> schrieb:

Michael Schwimmer

unread,
Feb 7, 2000, 3:00:00 AM2/7/00
to
Frank Schulze <F_Sc...@gmx.de> schrieb in im Newsbeitrag:
389c6fec....@News.CIS.DFN.DE...

> Sub Speichern()
> Dim Tourname As String, Zeile As Integer
>
> Tourname = "c:\eigene Dateien\Touren\" & ActiveSheet.Name
> Open Tourname For Output As #1
> Zeile = 1
> Do Until ActiveSheet.Cells(Zeile, 1) = ""
> Datensatz = Format(Zeile, "000") & ActiveSheet.Cells(Zeile, 1)
> Print #1, Datensatz
> Zeile = Zeile + 1
> Loop
> Close #1
> End Sub
>
> Keine Anfuehrungszeichen, aber leider weiterhin im ANSI-Format

Hallo Frank,
du kannst deinen Datensatz vor dem Speichern umwandeln.
Folgende API Funktionen erledigen das.

Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Private Declare Function CharToOem Lib "user32" Alias "CharToOemA" _
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long

Sub Test()
Dim dummy As String
dummy = "üäöÜÄÖß"
dummy = toOEM(dummy)
dummy = toCHAR(dummy)
End Sub

Function toOEM(ByVal Text As String) As String
toOEM = String(Len(Text), 0)
CharToOem Text, toOEM
End Function

Function toCHAR(ByVal Text As String) As String
toCHAR = String(Len(Text), 0)
OemToChar Text, toCHAR
End Function

Mit Hilfe dieser Funktionen kannst du aber auch nachher die
Datei umwandeln.

Sub Umwandeln()
Dim dummy As String, Länge As Long, Datei As String
Datei = "C:\Test2.txt"
Open Datei For Binary As #1
Länge = FileLen(Datei)
dummy = String(Länge, 0)
Get #1, , dummy
dummy = toOEM(dummy)
'dummy = toCHAR(dummy)
Put #1, 1, dummy
Close
End Sub

MfG
Michael


0 new messages