Word2000 (DOS-Konvertierung)

Manecke, Mathias manecke at dbl.ddb.de
Mi Aug 15 18:58:54 CEST 2001


Liebe Liste,

es gehört nicht ganz hierher, aber vor einem guten Monat wurde angeregt
durch eine Frage von Herrn Eversberg o. g. Thema hier schon mal diskutiert.
Ich hatte jetzt für das gleiche Problem einige Zeit investieren müssen und
habe die Lösung gefunden. Für Interessierte das Ergebnis:

Schon geklärt war: Wenn man eine ASCII-Text-Datei importieren möchte, muss
"Konvertieren beim Öffnen bestätigen" unter Extras/Optionen Registerkarte
Allgemein angekreuzt sein. Dann bekommt man die Auswahl der Konverter und
kann "MS-DOS-Text" auswählen.
Frau Koczian schrieb seinerzeit:
> Schon in Word 97 ist es mir übrigens nicht gelungen, das Öffnen als
> DOS-Text innerhalb eines Makros ohne Benutzereingriff zu veranlassen
Hintergrund ist, dass Winword ANSI-Text bei *.txt Dateien annimmt, wenn man
das Format automatisch bestimmen lässt:
	Documents.Open FileName:=xy-datei, ConfirmConversions:=False,
Format:=wdOpenFormatAuto
(ConfirmConversions:=False sorgt dafür, dass die Frage an den Benutzer nach
dem Konvertierungsprogramm übergangen wird.)
Die Online-Hilfe von VBA bietet als Alternative an, bei Format die
OpenFormat-Eigenschaft durch eine eindeutige Nummer darzustellen, die ein
externes Dateikonvertierungsprogramm repräsentiert (Format:=10 ist
beispielsweise "MS-DOS-Text mit Layout"). Aber ausgerechnet für die
ASCII-ANSI-Konvertierung verwendet WinWord keinen externen Konverter und der
interne lässt sich weder durch eine OpenFormat-ID, noch durch eine
wdOpenFormat-Konstante ansprechen. Nutzt man den FormatNamen
(Format:="MS-DOS-Text") bzw. den ClassNamen (Format:="PCText"), wird diese
Angabe einfach ignoriert und trotzdem ANSI angenommen.
Frau Koczian klagte:
> die Antwortversuche in der zuständigen Microsoft-Newsgroup waren wenig
> kenntnisreich.
Das hat sich wohl geändert.
Unter http://mypage.bluewin.ch/reprobst/WordFAQ/Konvert.htm ist u. a. genau
das Problem beschrieben und die Lösung vorgestellt:
...
	Eine word-integrierte OpenFormatID dazu gibt es nicht und um einen
externer Konverter (was die dynamische Ermittlung der Format-ID zulassen
würde) handelt es sich auch nicht. Sie können zwar, wenn Sie die Format-ID
dynamisch ermitteln, ... , den Filter mit dem Namen MS-DOS-Text mit Layout
applizieren. Damit erreichen Sie einen Teilerfolg, die Umlaute, z.B. werden
dann nämlich richtig umgesetzt nicht aber die Zeilenumbrüche.
	...
	Dank einem WordBasic-Befehl ergibt sich eine interessante Umgehung
dieses Problems, welche sich problemlos mit den neueren Word-Versionen
verträgt. Dabei wird die DOS-Datei Zeile für Zeile mit VB eingelesen und
unter Einsatz eines WordBasic-Befehles nach ANSI konvertiert. Der
WordBasic-Befehl, der dies kann nennt sich DOSToWin (als hätte Microsoft
ANSI erfunden und als wäre ANSI ein Synonym zu Windows
*kopfschüttelimquadrat) Die ganze Routine sieht dann wie folgt aus:

	Private Const Pfad = "C:\DOSText.asc"			' Pfad und
Name der zu konvertierenden ASCII-Datei
	Sub DOSnachANSI()
	  Dim X As String
	  Dim nDoc As Document, oRange As Range
	  Set nDoc = Documents.Add
'neue Datei erstellen
	  Set oRange = nDoc.Content					'und
den Inhalt als Range-Objekt definieren
	  Open Pfad For Input As #1
'die zu konvertierende Datei zum zeilenweisen Einlesen öffnen
	  While Not EOF(1)
	    Line Input #1, X
'Zeile lesen
	    X = WordBasic.[DOSToWin$](X)
'Zeile konvertieren
	    oRange.InsertAfter X & vbCrLf
'Zeile der neuen Word-Datei hinzufügen 
	  Wend
	  Close #1
'die zu konvertierende Datei schließen
	End Sub

Das ganze an Stelle von Documents.Open ins Makro und - siehe da - es
funktioniert!

Viele Grüße





Mehr Informationen über die Mailingliste Allegro