Forum: PC-Programmierung MS-Office:Text aus Vokabelliste erstellen dann Sprachausgabe


von Frank G. (frank_g53)


Lesenswert?

Hallo zusammen,

Um was geht es:
Ein MP3-file erstellen, welche eine von mir erstellte Vokabelliste 
abspielt. Erst in Englisch, dann die deutsche Übersetzung.
Die Vokabelliste wird nach und nach mit technischen Begriffen ergänzt.

Das habe ich bereits gefunden:
Das Programm DSpeech 
http://www.heise.de/download/dspeech-09d1a91bd1aec2fee048e77ad7f0f237-1448488761-2662973.html

Dieses Programm kann Texte vorlesen. Ok, nichts besonderes.
Der Clou: man kann Tags in den Text einfügen, mit denen man die Sprecher 
umschalten kann:

#VOICE Microsoft Zira Desktop
five
#VOICE Microsoft Hedda Desktop
fünf
#VOICE Microsoft Zira Desktop
stupid
#VOICE Microsoft Hedda Desktop
blöd

Das funktioniert sehr gut und ich kann das Gesprochene als MP3 
speichern.

Das möchte ich:
In Excel oder Word eine Tabelle mit zwei Spalten erstellen. Links der 
englische Begriff und rechts die deutsche Übersetzung. Dann soll ein 
Macro oder ähnliches mir aus dieser Tabelle einen Text, wie oben 
angegeben, erzeugen.

Ist das machbar?
Gibt es bereits fertige Lösungen?

Über Denkanstöße oder weiterführende Links würde ich mich freuen.

Danke.

von Mike B. (mike_b97) Benutzerseite


Lesenswert?

klar kann man das machen ist aber umständlich zu erklären
eine Schleife
läuft alle nicht-leeren Zeilen durch
darin
-Textausgabe "#VOICE Microsoft Zira Desktop"
-Textausgabe Zeilex_Spalte1
-Textausgabe "#VOICE Microsoft Hedda Desktop"
-Textausgabe Zeilex_Spalte2

Ausgabe in Textdatei müsste ich selbst erstmal nachschauen

von Frank G. (frank_g53)


Lesenswert?

Hallo Mike,

danke für deine Unterstützung.

Das habe ich gefunden und etwas angepasst:
Excel-Makro:
1
Option Explicit
2
Sub Create_New_Text_Files_from_Column()
3
'Variablen definieren
4
Dim Cr As Long, Cc As Integer, CrE As Long, CcE As Integer
5
Dim i As Long, n As Long, y As Long
6
Dim CHeader As String, ExPfad As String, Exfile As String
7
'Exportpfad mit Backslash am Schluss definieren !!
8
ExPfad = "C:\vokabeln\"
9
Cr = 65536
10
'Schliessen einer evetnuell noch geöffneten Datei
11
Close #1
12
'1. Öffnen der Datei
13
'Den Namen und Pfad bitte anpassen
14
Exfile = ExPfad & ".txt"
15
Open Exfile For Output As #1
16
'Beginn des Datenexports in die Textdatei
17
For n = 2 To Cr
18
    'Write oder Print verwenden
19
    Print #1, "#VOICE Microsoft Zira Desktop" 'umschalten auf englisch
20
    Print #1, Cells(n, 1) 'englisches verb aus der Tabelle in txt-file schreiben
21
    Print #1, "#VOICE Microsoft Hedda Desktop" 'umschalten auf deutsch
22
    Print #1, Cells(n, 2) 'deutsches verb aus der Tabelle in txt-file schreiben
23
Next n
24
    'Schliessen der Datei weil Dateiende erreicht wurde
25
    Close #1
26
    MsgBox n & " Textdateien wurden in " & ExPfad & " erstellt"
27
End Sub

Ergibt diesen Text:

#VOICE Microsoft Zira Desktop
Five
#VOICE Microsoft Hedda Desktop
Fünf
#VOICE Microsoft Zira Desktop
Stupid
#VOICE Microsoft Hedda Desktop
blöd
#VOICE Microsoft Zira Desktop

#VOICE Microsoft Hedda Desktop

#VOICE Microsoft Zira Desktop

#VOICE Microsoft Hedda Desktop

#VOICE Microsoft Zira Desktop

#VOICE Microsoft Hedda Desktop

#VOICE Microsoft Zira Desktop

Bin ganz nahe an der Lösung.
Muss noch die richtigen Steuerzeichen einfügen und den Zeilenzähler n 
umstricken.

von Frank G. (frank_g53)


Lesenswert?

Ach das ging schneller als ich dachte:
1
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Jetzt habe ich diesen Text:

#VOICE Microsoft Zira Desktop
Five
#VOICE Microsoft Hedda Desktop
Fünf
#VOICE Microsoft Zira Desktop
Stupid
#VOICE Microsoft Hedda Desktop
blöd

Nun kann ich mein kleines Vokabelheft abtippen und mir die Vokabeln auf 
dem Weg zur Arbeit anhören.

Vorausgesetzt mein Anfänger-script macht das mit.
Werde mich mal in dieses Office-VBA einarbeiten. Kann man bestimmt 
eleganter lösen.

Hier der aktuelle Code:
1
Option Explicit
2
Sub Create_New_Text_Files_from_Column()
3
'Variablen definieren
4
Dim Zeilenanzahl As Long
5
Dim n As Long
6
Dim CHeader As String, ExPfad As String, Exfile As String
7
'Exportpfad mit Backslash am Schluss definieren !!
8
ExPfad = "C:\vokabeln\"
9
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
10
'Schliessen einer evetnuell noch geöffneten Datei
11
Close #1
12
'1. Öffnen der Datei
13
'Den Namen und Pfad bitte anpassen
14
Exfile = ExPfad & ".txt"
15
Open Exfile For Output As #1
16
'Beginn des Datenexports in die Textdatei
17
For n = 2 To Zeilenanzahl
18
    'Write oder Print verwenden
19
    Print #1, "#VOICE Microsoft Zira Desktop" 'umschalten auf englisch
20
    Print #1, Cells(n, 1) 'englisches verb aus der Tabelle in txt-file schreiben
21
    Print #1, "#VOICE Microsoft Hedda Desktop" 'umschalten auf deutsch
22
    Print #1, Cells(n, 2) 'deutsches verb aus der Tabelle in txt-file schreiben
23
Next n
24
    'Schliessen der Datei weil Dateiende erreicht wurde
25
    Close #1
26
    MsgBox n & " Vokabeln wurden in " & ExPfad & " erstellt"
27
End Sub

Die Excel-Tabelle:

Englisch  Deutsch
Five          Fünf
Stupid          blöd

: Bearbeitet durch User
von Mike B. (mike_b97) Benutzerseite


Lesenswert?

öhm, das ist VBA
wieso eleganter lösen? es kommt raus was du raus haben willst
Durch die Abfrage der letzten Zeile bist du für Erweiterungen gerüstet.
Punkt. Fertig.

von Keep It Simple! (Gast)


Lesenswert?

Warum muss die Eingabe eigentlich unbedingt aus so etwas kompliziert zu 
handhabendem wie einer Excel-Tabelle kommen? Man könnte das ganze doch 
einfach in eine Textdatei nach dem folgenden Schema schreiben:
1
five fünf
2
stupid blöd

Das dann weiter zu verarbeiten ist in jeder Programmiersprache trivial. 
Sogar mit einem dreckigen Einzeiler für Kommandozeilenfrickler:
1
awk '{ printf "#VOICE Microsoft Zira Desktop\n%s\n#VOICE Microsoft Hedda Desktop\n%s\n", $1, $2 }' vokabeln.txt > ausgabe.txt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.