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

Kyrillisch, VBA-Lösung

158 views
Skip to first unread message

Reinhard Schüll

unread,
Dec 26, 2008, 10:55:43 AM12/26/08
to
Hallo NG,
da es nicht möglich ist, zwei verschiedene Ländereinstellungen (deutsch und
russisch) gleichzeitig in einem Tabellenblatt zu haben, kam mir die Idee,
einen kyrillischen Text aus einer Textdatei (russisch.txt) über den Editor
zu öffnen und von dort - vorerst per Hand - in ein Textfeld zu kopieren.
Soweit ok. Wie wickle ich diesen Vorgang bitte per Makro ab? Vielleicht läßt
sich die Zwischenstation (Editor) auch umgehen.
Gruß Reinhard

Reinhard Schüll

unread,
Dec 26, 2008, 1:33:01 PM12/26/08
to
Hallo NG,
mein Makro sieht momentan so aus:
....
TextBox1.Text = ""
Dim Ergebnis
Ergebnis = Shell("C:\WINDOWS\NOTEPAD.EXE S11.TXT", 1)
AppActivate Ergebnis
SendKeys "^A", True 'alles Auswählen
SendKeys "^C", True 'Auswahl in die Zwischenablage kopieren
AppActivate "Microsoft Excel"
TextBox1.Paste 'Zwischenablage einfügen
....
Leider funktioniert der SendKeys-Abschnitt nicht, da das Notepad sich zwar
mit der Datei S11.txt öffnet, aber nicht den Focus erhält.
Außerdem würde ich nicht unbedingt die SendKey-Methode bevorzugen wollen.
Gruß Reinhard


"Reinhard Schüll" <chick...@hotmail.com> schrieb im Newsbeitrag
news:A6E72A1A-1E9B-4855...@microsoft.com...

Wolfgang Habernoll

unread,
Dec 27, 2008, 5:34:17 AM12/27/08
to
Hallo Reinhard

"Reinhard Schüll" <chick...@hotmail.com> schrieb im Newsbeitrag
news:A6E72A1A-1E9B-4855...@microsoft.com...

das sollte doch im Prinzip auch direkt gehen, oder verstehe ich da etwas Falsch.
Passe Tabellen und Textboxnamen deiner an, auch solltest du Multiline in der Textbox
auf True setzen.

Sub TextInTextbox()
Dim strIn As String
Open "S11.txt" For Input As #1
Do Until EOF(1)
Line Input #1, strIn
ActiveSheet.TextBox1.Text = _
ActiveSheet.TextBox1.Text & strIn & vbLf
Loop
Close #1
End Sub


--
mfG
Wolfgang Habernoll

[ Win XP Home SP-2 , XL2002 ]

Reinhard Schüll

unread,
Dec 27, 2008, 7:01:51 AM12/27/08
to
Hallo Wolfgang,
dieser Code funktioniert schon und war mir bisher auch zu Diensten, nur ist
dann in der Textbox kein kyrillisches Zeichen zu sehen, sondern andere die
eben nicht mehr kyrillisch sind.

Da fehlt dir natürlich eine entsprechende Datei, um dies nachzuvollziehen.
Ist aber einfach zu erstellen:
Von
http://www.russlandjournal.de/podcasts/lektionen/urok-1-hallowie-gehts/
kopiere kyrilllische Zeichen in die Zwischenablage,
füge den Inhalt der Zwischenablage in das Notepaddokument ein,
speichere das Dokument unter der Codierung Unicode ab (nicht unter ANSI!!).
Wenn unter ANSI (Voreinstellung) abgespeichert wird, ist schon beim nächsten
Öffnen der Inhalt nicht mehr lesbar, d.h. dann ist schon eine Umwandlung
erfolgt!

Vermutlich liegt das Problem darin, dass die Input-Anweisung auf
ANSI-Codierung eingestellt ist.

Die nachfolgenden Zeichen habe ich als kyrillische Zeichen eingefügt:
Здравствуйте!
Damit diese in der Newsgroup als solche richtig lesbar sind, muss ich diese
News unter der Codierung Unicode absenden.

Also nicht staunen, nur wundern.

Gruß Reinhard

z.B.
"Wolfgang Habernoll" <wolfgang....@t-online.de> schrieb im Newsbeitrag
news:gj50bj$d2g$03$1...@news.t-online.com...
> Hallo Reinhard

Reinhard Schüll

unread,
Dec 27, 2008, 10:14:26 AM12/27/08
to
Hallo NG,

habe die Lösung gefunden:

Sub HoleTextAusDatei ()
TextBox1.Text = ""
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f, ts, s

datei = [B1].Offset(SpinButton1.Value, 0) ' .. dient zur Auswahl der
gewünschten Datei aus einer Liste
datei = Replace(datei, ".mp3", ".txt") '... dito, da eine
gleichnamige mp3-Datei existiert

' ab hier die OpenAsTextStream-Methode ...
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(datei)
Set ts = f.OpenAsTextStream(ForReading, TristateTrue)
s = ts.ReadLine
ts.Close
TextBox1.Text = s
End Sub

Gruß Reinhard

0 new messages