# Objektname zusammensetzen aus Variablen



## SwissThrall (3. März 2008)

Hallo zusammen,

Ich habe zwei Word Dokumente, jetzt soll von dem ersten der text in das zweite koppiert werden, bei dem der RadioButton aktiv ist. Es gibt 5 Hauptkategorien mit je 5 Subkategorien und pro Subkategorie hat es 5 Auswahlen. Also werden insgesamt 25 Texte koppiert.

Das Koppieren macht keine Probleme, jetzt sind es aber ca 125 RadioButtons, darum würde ich die Objektnamen gerne zusammenstellen und dann abfragen per For-Schleife und nicht per If...else if.
Ich habe in einem MS-Forum einen Beitrag gefunden, das es per Me.Controls(variable).Value Funktionieren soll. Dies funktioniert aber nur wenn das Makros über eine Form aufgerufen wird, und ich habe keine Form.

ich weiss nicht mehr weiter, darum wende ich mich an euch. 
Google war leider auch keine brauchbare Hilfe.

Ich danke euch schon mal im voraus.

Freundliche Grüsse
SwissThrall


----------



## DrSoong (3. März 2008)

Mal davon abgesehen, dass das auch in den VB-Bereich gepasst hätte (die Makros in Word sind ja VBA), wenn du keine Form hast, wo sind deine Radiobuttons untergebracht?

Wenn die Buttons direkt am Dokument untergebracht sind, verwendest du statt *Me* einfach *Document(Dokumentenname)*.


Der Doc!


----------



## SwissThrall (3. März 2008)

Die RadioButtons sind direkt auf dem Dokument.

Die Methode *Documents(Dokumentenname)* gibt es, aber wie kann ich von dort aus die *Controls* aufrufen? Die existiert nämlich nicht

MfG 
Swiss

~~Edit~~
Benutze Office 2003


----------



## DrSoong (3. März 2008)

Ups, ein S vergessen, sorry.

Kanns jetzt mangels Word nicht testen, sollte aber so gehen:

```
'Ich verwend hier mal ActiveDocument, dann halt einfach durch das Documents ersetzen
'Das ganze sollte True oder False ausgeben
MsgBox ActiveDocument.Controls("OptionButton1").Value
```
Wenns nicht ganz funktioniert meld dich, ich kann das erst leider wieder am Mittwoch testen.


Der Doc!


----------



## SwissThrall (4. März 2008)

Hi Doc,

es kommt ein Fehler, dass das Objekt die Eigenschaft oder Methode nicht ünterstüzt.

Auch so funktioniert es nicht,

```
MsgBox Documents("dok1.doc").Controls("OptionButton1").Value
```

mfg Swiss


----------



## DrSoong (5. März 2008)

So, hab mich mal durch Word durchgekämpft, ist leider nicht so einfach, die bei einer Form.

Word fügt diese Optionsfelder als *InlineShapes* ein, das ansprechen ist so eine Sache, da das über den Index läuft. Mit

```
For Each xShapes In ActiveDocument.InlineShapes
 MsgBox xShapes.OLEFormat.Object.Value
 MsgBox xShapes.OLEFormat.Object.Name
Next xShapes
```
kannst du die die namen und Werte der Steuerelemente im Dokument ansehen, ist bislang die einzige Methode, die ich so gefunden haben. Ist zwar eine Fummelei, schaus dir mal an.


Der Doc!


----------



## SwissThrall (5. März 2008)

Danke für die Hilfe, 
da ich heute nicht auf der Arbeit bin, kann ich dies erst Morgen testen. Melde mich wieder, wenn ich es getest habe.

Greez
Swiss


----------



## SwissThrall (6. März 2008)

Ich hab den Code eben getestet, er Funktioniert einwandfrei.

Vielen Dank für deine Hilfe Doc

Falls ein bestimmtes Objekt angesprochen werden soll, kann dies so gemacht werden:

```
ActiveDocument.InlineShapes.Item(index).OLEFormat.Object.Value
```

Nochmals vielen Dank.

Gruss Swiss


----------



## DrSoong (6. März 2008)

Das man mit dem Index ein bestimmtes Objekt ansprechen kann ist klar, besser wäre es aber über den Objektnamen, da sich bei InlineShapes der Index verändert, wenn man z.B. die Reihenfolge der Anordnung ändert. Dazu hab ich aber leider nichts gefunden.


Der Doc!


----------



## SwissThrall (6. März 2008)

Dies habe ich auch versucht, hab aber auch nichts gefunden, aber per Index funktioniert es sehr gut.


----------

