(zu alt für eine Antwort)
Euro nach Dollar umwandeln
Arno Lesmeister
2005-07-01 05:11:23 UTC
Hallo NG,

ich habe folgendes Problem. Meine Word - Rechnungsvorlage hat in Textboxen
Euro - Beträge diese möchte ich gerne automatisiert in US - Dollar berechnet
bekommen.

Es sollte eigentlich alle Textboxen die im Formular enthalten sind nach
Zahlen durchsuchen und diese Umrechnen.

Da ich mit Word - VBA noch nicht viel zu tun hatte, weis ich leider nicht
wie ich es umsetzen könnte.
In Excel hatte ich mal diese Lösung, leider funktioniert diese nicht bei
Word.

Sub Euro_DM()
For Each z In Selection.Cells
z.Value = DM_EURO(z)
Next
End Sub
Wenn Ihr mir dabei helfen könntet wäre das sehr nett. Ich benutze Word ab
Version 2000.

nette Grüße
Arno
Helmut Weber
2005-07-01 12:07:52 UTC
Hallo Arno,

der auf den ersten Blick schwierigste Teil
ist am Ende wohl der einfachste.
Falls Deine Textboxen Inlineshapes sind:

Dim oInl As InlineShape
Dim sZhl As String
For Each oInl In ActiveDocument.InlineShapes
If oInl.OLEFormat.ClassType = "Forms.TextBox.1" Then
sZhl = oInl.OLEFormat.Object
Msgbox sZhl
oInl.OLEFormat.Object = "test"
End If
Next

Damit setzt Du alle Textboxen auf den Text "Test".

Für Shapes gilt das gleiche.

Nun kommt es darauf an, in welchem Format Deine Euro-Werte da drin
stehen, denn eine Textbox enthält eigentlich keine Zahlen,
sondern nur Text, der Zahlen repräsentiert. Zahlen aus Text
herauszufiltern, ist schier unmöglich, theoretisch.
Da müsste man zwischen Nummern und Zahlen unterscheiden.
Wenn vielleicht in einer anderen Textbox eine Haus-Nummer (!) steht
oder eine Telefon-Nummer (!).

So weit, so gut. Melde Dich noch mal und überlege, ob irgendwie
eine Systematik da ist, die zwischen Zahlen und Nicht-Zahlen
unterscheiden könnte. Wenn Da nichts als Euros wie "12345"
drinsteht und keine Ziffern in anderen Textboxen, ist's kein Problem.

Gruß

Helmut Weber, MVP, WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003
Arno Lesmeister
2005-07-01 15:39:06 UTC
Hallo Helmut,

woran erkenne ich das meine Textboxen InlineShapes sind?

Das einzige was ich weis ist das die Dateneingabe über PC - Kaufmann
erfolgt. Die Übergabe also die Rechnung wird dann in Word erzeugt. Der
Rechnungsbetrag in Euro wird in einer Textbox dargestellt und das Euro -
Zeichen auch in eine seperate Textbox.
Post by Helmut Weber
der auf den ersten Blick schwierigste Teil
ist am Ende wohl der einfachste.
Dim oInl As InlineShape
Dim sZhl As String
For Each oInl In ActiveDocument.InlineShapes
If oInl.OLEFormat.ClassType = "Forms.TextBox.1" Then
sZhl = oInl.OLEFormat.Object
Msgbox sZhl
oInl.OLEFormat.Object = "test"
End If
Next
Damit setzt Du alle Textboxen auf den Text "Test".
Für Shapes gilt das gleiche.
Nun kommt es darauf an, in welchem Format Deine Euro-Werte da drin
stehen, denn eine Textbox enthält eigentlich keine Zahlen,
sondern nur Text, der Zahlen repräsentiert. Zahlen aus Text
herauszufiltern, ist schier unmöglich, theoretisch.
Genau es bestehen warscheinlich die Zahlen aus Text, das letztere hab ich
mir so halber gedacht. :-((.
Post by Helmut Weber
Da müsste man zwischen Nummern und Zahlen unterscheiden.
Wenn vielleicht in einer anderen Textbox eine Haus-Nummer (!) steht
oder eine Telefon-Nummer (!).
Eben das ist nun mal der Fall.
Post by Helmut Weber
So weit, so gut. Melde Dich noch mal und überlege, ob irgendwie
eine Systematik da ist, die zwischen Zahlen und Nicht-Zahlen
unterscheiden könnte. Wenn Da nichts als Euros wie "12345"
drinsteht und keine Ziffern in anderen Textboxen, ist's kein Problem.
Leider gibt es noch andere Textboxen in denen Anschrift, Hausnummer usw.
enthalten sind. Aber wenn Du magst kann ich dir das Formular gerne mal per
Mail zukommen lassen. Das Problem ist leider das es von PC - Kaufmann
automatisch generiert wird und keine Möglichkeit es anzupassen aus dem
Programm heraus.

nette Grüße und schönes WE

Arno
Robert M. Franz (RMF)
2005-07-01 16:05:50 UTC
Hallo Arno
Post by Arno Lesmeister
woran erkenne ich das meine Textboxen InlineShapes sind?
AFAIK sind Textboxen _nie_ InlineShapes.

2cents
Robert
--
/"\ ASCII Ribbon Campaign | MS
\ / | MVP
X Against HTML | for
/ \ in e-mail & news | Word
Arno Lesmeister
2005-07-01 17:10:46 UTC
Hi Robert,

was sind Textboxen dann? Wenn keine InlineShapes?

Gruß
Arno
Thomas Gahler
2005-07-01 17:25:18 UTC
Hallo Arno
Hi Robert,
Post by Arno Lesmeister
was sind Textboxen dann? Wenn keine InlineShapes?
Tja, die richtig Terminologie ist so eine Sache und hat schon öfters zu
Missverständnisen geführt.

- Textbox -> Eingefügt über die Symbolleiste 'SteuerElement Tollbox' (als
InlineShape oder Shape möglich)
- Textformularfelder -> Eingefügt über die Symbolleiste 'Formular'
- Textfeld -> Eingefügt über die Symbolleiste 'Zeichnen' (Shape)
- Positionsrahmen -> Umgewandeltes Textfeld

Mehr kommt mir im Momenzt nmihct in den Sinn.
Welches hast du jetzt im Einsatz
--
Thomas Gahler
MVP für WordVBA

- Windows XP (SP2), Office XP (SP3)
Helmut Weber
2005-07-01 19:33:42 UTC
Hallo alle,

selbstverständlich hat Thomas recht.

Allerdings, wie soll ein Nicht-Profi herausfinden,
wie irgendwelche mehr oder weniger fixe Elemente
in sein Dokument hineingekommen sind?

Also, auf "Textbox" als Inlineshape prüfen, z.B. so,
mit F8 im VBA-Editor alles durchgehen.

Dim oInl As InlineShape
For Each oInl In ActiveDocument.InlineShapes
If oInl.OLEFormat.ClassType = "Forms.TextBox.1" Then
oInl.Select
End If
Next

@Robert:
Inlineshape ist sogar das Default-Object,
wenn mit Steuerelement-Toolbox das eingefügt wird,
was dort als "Text Box" bezeichnet wird.

Theoretisch muss es, wieder wie Thomas schreibt,
auch als Shape möglich sein. Es gelingt mir aber
im Augenblick nur sehr teilweise, die als Inlineshapes
eingefügten Textboxen in Shapes umzuwandeln.

Dim oInl As InlineShape
For Each oInl In ActiveDocument.InlineShapes
If oInl.OLEFormat.ClassType = "Forms.TextBox.1" Then
oInl.ConvertToShape
End If
Next

Bei 4 Textboxen als Inlineshapes hat der Code oben
nach 10 bis 20 Versuchen einmal (1), und dann nur für
die erste Textbox funktioniert. Bug entdeckt, würde
ich meinen zu sagen dürfen. Fehler -2147467259 ...
und dann "insufficient memory", was natürlich selbst
ein Fehler ist, denn Memory ist da im Überfluß.

@Arno: Textboxen haben in der Regel einen Rand,
und sehen ähnlich aus wie Eingabefelder in Dialogen.
Inlineshapes verrutschen mit dem Text. Shapes nicht.

Textformularfelder sind grau und wachsen mit der Länge
der Eingabe. Textboxen bleiben immer gleich lang.

Natürlich fast alles nur bei Default-Einstellungen.

Ist in der Tat nicht so einfach.

Gruß

Helmut Weber, MVP, WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003
Robert M. Franz (RMF)
2005-07-01 22:44:14 UTC
Hallo Thomas
Post by Thomas Gahler
Post by Arno Lesmeister
was sind Textboxen dann? Wenn keine InlineShapes?
Tja, die richtig Terminologie ist so eine Sache und hat schon öfters zu
Missverständnisen geführt.
- Textbox -> Eingefügt über die Symbolleiste 'SteuerElement Tollbox' (als
InlineShape oder Shape möglich)
Oops, sorry: Ich meinte Textfelder, ganz klar!

Gruss
Robert
--
/"\ ASCII Ribbon Campaign | MS
\ / | MVP
X Against HTML | for
/ \ in e-mail & news | Word
Arno Lesmeister
2005-07-02 05:42:01 UTC
Hi Helmut und Robert,

mmmhhhh alles klar verstehe, also fast ein ausichtsloses unterfangen. In
Word XP und Word 2003 gibt es doch Smarttags die man einsetzen kann. Wäre
das nicht eine alternative? Allerdings hab ich so eine Ahnung das man wenn
man die selbst erstellen will C++ können sollte.

wünsch euch ein nettes Wochenende

Gruß
Arno
Susanne Wenzel
2005-07-02 07:27:58 UTC
Hallo Arno,
da Dein Problem wohl nicht so einfach zu knacken ist, hier eine Idee (mehr
auch nicht)...
Post by Arno Lesmeister
ich habe folgendes Problem. Meine Word - Rechnungsvorlage hat in Textboxen
Euro - Beträge diese möchte ich gerne automatisiert in US - Dollar berechnet
bekommen.
Es sollte eigentlich alle Textboxen die im Formular enthalten sind nach
Zahlen durchsuchen und diese Umrechnen.
Da ich mit Word - VBA noch nicht viel zu tun hatte, weis ich leider nicht
wie ich es umsetzen könnte.
In Excel hatte ich mal diese Lösung, leider funktioniert diese nicht bei
Word.
Sub Euro_DM()
For Each z In Selection.Cells
z.Value = DM_EURO(z)
Next
End Sub
Tja, Word ist in solchen Bereichen leider (@Thomas ;-) nicht Excel, das
habe ich auch schon mehrfach feststellen müssen:-(
Post by Arno Lesmeister
Wenn Ihr mir dabei helfen könntet wäre das sehr nett. Ich benutze Word ab
Version 2000.
Wäre es eine Möglichkeit für Dich, die Werte außerhalb von Word in Dollar
umzurechnen und die umgerechneten Werte direkt in Word einzutragen (könnte
ich mir gut vorstellen, falls Deine ursprünglichen Zahlen z. B. aus einer
Datenbank stammen)?

Vielleicht hilfts ja
Viele Grüße aus dem hohen Norden Deutschlands
Susanne
Helmut Weber
2005-07-02 08:45:17 UTC
Hallo Arno,

leider wissen wir immer noch nicht, ob es sich wirklich
um Textboxen handelt, und ob man irgendwie diejenigen,
in denen Euro-Beträge stehen von den anderen unterscheiden kann.

Wenn Du Deine Vorlage ändern darfst, könntest Du die Textboxen
mit Euros natürlich irgendwie kennzeichnen: Schriftart, Farbe, etc.

Man kann auch die Namen der Textboxen zur Identifizierung verwenden.
Natürlich kann man ihnen auch andere Namen geben.

Man kann auch die Inhalte verwenden, aber wie gesagt nur, wenn
Du nicht auch Hausnummern etc. hast, die dann auch in Dollars
umgerechnet werden. Und die Formate sollten konsistent sein:
1 000,34 € oder 1000,34 €, jedenfalls was irgendwie regelhaftes.

Und die urspünglichen Euro-Werte müssten irgendwo gespeichert
werden, falls Du wieder mal in die andere Richtung umrechnen willst.
Andernfalls düftest Du kaum wieder beim Ausgangswert ankommen.

Gruß

Helmut Weber, MVP, WordVBA

"red.sys" & chr$(64) & "t-online.de"
Win XP, Office 2003
Arno Lesmeister
2005-07-02 13:08:43 UTC
Hallo Susanne,

nette grüße nach Norddeutschland.
Post by Susanne Wenzel
Wäre es eine Möglichkeit für Dich, die Werte außerhalb von Word in Dollar
umzurechnen und die umgerechneten Werte direkt in Word einzutragen (könnte
ich mir gut vorstellen, falls Deine ursprünglichen Zahlen z. B. aus einer
Datenbank stammen)?
Ganz kurz, das könnte ich mir auch vorstellen. Die Rechnung wird aus der
Anwendung PC - Kaufmann generiert, in wie fern ich hier zugriff auf die
Datenbank und Daten habe weis ich leider nicht. Aber den Ansatz hatte ich
auch schon in betracht gezogen. Da muss ich am Montag wohl noch etwas
Recherche betreiben.
Post by Susanne Wenzel
Vielleicht hilfts ja
Viele Grüße aus dem hohen Norden Deutschlands
Von wo genau stammen den die netten Grüße aus dem hohen Norden die bis zur
Pfalz runterreichen :-).
Post by Susanne Wenzel
Susanne
Arno Lesmeister
2005-07-02 13:19:24 UTC
Hallo Helmut,

der Ansatz von Susanne fand ich ganz gut. Werde mal in dieser Richtung
rechachieren.
Post by Helmut Weber
leider wissen wir immer noch nicht, ob es sich wirklich
um Textboxen handelt, und ob man irgendwie diejenigen,
in denen Euro-Beträge stehen von den anderen unterscheiden kann.
so jetzt weis ich was es ist es sind Positionsrahmen die sich jeh nach
belieben verschieben lassen.
Post by Helmut Weber
Wenn Du Deine Vorlage ändern darfst, könntest Du die Textboxen
mit Euros natürlich irgendwie kennzeichnen: Schriftart, Farbe, etc.
Leider nein, weil dies durch PC - Kaufmann vorgegeben wird.
Post by Helmut Weber
Man kann auch die Namen der Textboxen zur Identifizierung verwenden.
Natürlich kann man ihnen auch andere Namen geben.
Richtig dann müsste man aber bei jeder neuen Rechnung die generiert wird,
immer wieder die Namen neu vergeben müssen das ist auch nicht möglich.
Post by Helmut Weber
Man kann auch die Inhalte verwenden, aber wie gesagt nur, wenn
Du nicht auch Hausnummern etc. hast, die dann auch in Dollars
1 000,34 ? oder 1000,34 ?, jedenfalls was irgendwie regelhaftes.
Hey wäre auch mal was nettes meine Hausnummer in Dollars zu haben :-).
Post by Helmut Weber
Und die urspünglichen Euro-Werte müssten irgendwo gespeichert
werden, falls Du wieder mal in die andere Richtung umrechnen willst.
Andernfalls düftest Du kaum wieder beim Ausgangswert ankommen.
ich denke mal das wäre das kleinste Problem, da diese Daten irgenwo in der
Datenbank von PC - Kaufmann wohl vorhanden sind.

wenn es nach mir ginge würde ich es lieber in Excel tätigen, weil da schon
was einigermassen fertiges besteht. Aber so mmmmhhhhh grübel grübel grübel.

Also ich werde mir mal den Ansatz von Susanne durch den Kopf gehen lassen.
Mit den Leuten reden ob wir einen Zugriff auf die Datenbank bekommen können,
das würde die Sache für mich viel einfacher machen.

nette Grüße, recht herzlichen Dank und ein schönes Wochenende

Arno Lesmeister
Susanne Wenzel
2005-07-03 07:26:37 UTC
Hallo Arno,
Post by Arno Lesmeister
nette grüße nach Norddeutschland.
sind angekommen, vielen Dank:-)
Post by Arno Lesmeister
Post by Susanne Wenzel
Wäre es eine Möglichkeit für Dich, die Werte außerhalb von Word in Dollar
umzurechnen und die umgerechneten Werte direkt in Word einzutragen (könnte
ich mir gut vorstellen, falls Deine ursprünglichen Zahlen z. B. aus einer
Datenbank stammen)?
Ganz kurz, das könnte ich mir auch vorstellen. Die Rechnung wird aus der
Anwendung PC - Kaufmann generiert, in wie fern ich hier zugriff auf die
Datenbank und Daten habe weis ich leider nicht.
Na, hoffentlich sind die nicht so zugeknöpft wie DATEV (aber selbst da kann
man Daten rausziehen).
Post by Arno Lesmeister
Aber den Ansatz hatte ich auch schon in betracht gezogen. Da muss ich am
Montag wohl noch etwas Recherche betreiben.
Ich drücke Dir auf jeden Fall die Daumen.
Post by Arno Lesmeister
Von wo genau stammen den die netten Grüße aus dem hohen Norden die bis zur
Pfalz runterreichen :-).
Hey, ein Pälzer!
Hoher Norden = Großraum Kiel

Grüße von dort in den Südwesten
Susanne
Arno Lesmeister
2005-07-04 16:21:49 UTC
Hi Susanne,

danke für Deine Antwort. Ich hoffes es mal sehen was dabei rauskommt.

Ein Nordlicht, das ist schön ich bin auch mindest einmal im Jahr im Norden
aber ehr Bremen und Oldenburg Osternburg. Verwandschaft, Schwiegereltern und
so besuchen, ab und an auch mal beruflich.

Danke für die vielen Info`s

nette Grüße
Arno