Makro: abhängig von einem wert - bild ausgeben

Hallo Leute!

Ich habe ein Problem. Und zwar will ich im Word ein Makro erstellen, was abhängig von der Eingabe eines Wertes ein bestimmtes Bild ausgibt (sind 5 Bilder mit der Wertung 1-5). Der Wert der eingegeben wird soll mit einem Richtwert sozusagen verglichen werden und dann ein Bild mit der Benotung sich holen. Leider habe ich so gut wie keine Erfahrung mit Programmieren von Makros und wäre euch sehr sehr dankbar wenn ihr mir weiterhelfen könntet.

Danke im voraus

GLG S. Aksan

Hallo Aksan,

… im Word ein Makro erstellen, was abhängig von der Eingabe eines Wertes ein bestimmtes Bild ausgibt (sind 5 Bilder mit der Wertung 1-5).

Warum in Word? Sowas (ein Wert „holt“ sich ein Ergebnis) wäre eher was für Excel. Aber egal.

Der Wert der eingegeben wird soll mit einem Richtwert sozusagen verglichen werden und dann ein Bild mit der Benotung sich holen.

Das Problem ist: Word ist statisch (holt sich i.a. nur einmal etwas), Excel ist dynamisch (holt sich i.a. bei jeder Änderung etwas).

Mir erscheint unter Deinen Vorgaben folgende Lösung in Word am einfachsten.

  • Am Ende Deines Dokuments fügst Du die fünf Bilder ein.
  • Du markierst das erste Bild, drückst [Strg]+[F5], das bedeutet Einfügen - Textmarke, und gibst als Textmarkennamen „b1“ ein. Genauso bei den anderen Bildern.
  • Dann gehst Du Wert für Wert durch Deine Liste. Dort fügst Du über Einfügen - Feld einen Verweis auf die jeweilige Textmarke ein: wo Wert 1 ist, muß das Feld lauten {Ref b1}, wo Wert 2 ist, lautet das Feld {Ref b2}, usw. Damit hat jeder Wert sein Bild.
  • Jetzt markierst Du den ganzen Text mit [Strg]+[num5]*. Dann fixierst Du die Verweise mit [Strg]+[Shift]+[F9].
  • Zum Schluß löschst Du die fünf Bilder am Ende des Dokuments (sie haben ausgedient, Du brauchst sie nicht mehr als Quelle für den Verweis, weil Du die Verweisergebnisse fixiert hast).

Damit hast Du die (statische) Ergebnisliste zum Ausdrucken.

HTH.

M.
___________
[num5] die 5 auf dem Zehnerblock

vielen dank für deine hilfe, doch das hilft mir leider nicht weiter… vielen dank für deine mühe…mir ist bekannt das man im excel das dynamisch machen kann…doch ich hätte es für eine ergebnisdokumentation in word gebraucht.

mbg sewi

Ich habe ein Problem. Und zwar will ich im Word ein Makro
erstellen, was abhängig von der Eingabe eines Wertes ein
bestimmtes Bild ausgibt (sind 5 Bilder mit der Wertung 1-5).
Der Wert der eingegeben wird soll mit einem Richtwert
sozusagen verglichen werden und dann ein Bild mit der Benotung
sich holen. Leider habe ich so gut wie keine Erfahrung mit
Programmieren von Makros und wäre euch sehr sehr dankbar wenn
ihr mir weiterhelfen könntet.

Hallo Aksan,

Alt+F11, links siehst du das Projekt des aktuellen Dokuments, erkennbar am Namen.
Dadrunter ist „ThisDocument“, mache einen Doppleklick darauf.
Dann füge den nachstehenden Code ein.
Die Pfade und Namen der Bilddateien mußt du anpassen.
Erlaubt sind *.bmp, *.cur, *.gif, *.ico, *.jpg, *.wmf

Dann Editor schließen, die atei speichern und beenden, dann neu öffnen.

Option Explicit
'
Private Sub Document\_Open()
ListBox1.Clear
ListBox1.AddItem "1"
ListBox1.AddItem "2"
ListBox1.AddItem "3"
ListBox1.AddItem "4"
ListBox1.AddItem "5"
End Sub
'
Private Sub ListBox1\_Click()
Application.ScreenUpdating = False
Select Case ListBox1.Value
 Case "1"
 Image1.Picture = LoadPicture("c:\test\cpu.jpg")
 Case "2"
 Image1.Picture = LoadPicture("c:\test\cpuauslastung.jpg")
 Case "3"
 Image1.Picture = LoadPicture("c:\test\kwadddiagram.jpg")
 Case "4"
 Image1.Picture = LoadPicture("c:\test\kwbeding.jpg")
 Case "5"
 Image1.Picture = LoadPicture("c:\test\kwdateiformat.jpg")
 Case Else
 'nix
End Select
Documents.Add 'nötig um das Image zu aktualisieren, refresh,repaint geht nicht
ActiveDocument.Close savechanges:=False
Application.ScreenUpdating = True
End Sub

Gruß
REinhard

hallo reinhard,

vielen vielen lieben dank für deine hilfe - is echt super!! ich hätte da nur noch eine frage: was muss ich jetzt in word eingeben, dass es an der gewissen stelle das bild einfügt? - es genügt nicht einfach nur „1“ „2“ usw einzugeben!

nochmals vielen lieben dank

lg sewi

Case „1“
Image1.Picture = LoadPicture(„c:\test\cpu.jpg“)
Case „2“
Image1.Picture =
LoadPicture(„c:\test\cpuauslastung.jpg“)
Case „3“
Image1.Picture = LoadPicture(„c:\test\kwadddiagram.jpg“)
Case „4“
Image1.Picture = LoadPicture(„c:\test\kwbeding.jpg“)
Case „5“
Image1.Picture =
LoadPicture(„c:\test\kwdateiformat.jpg“)
Case Else
'nix
End Select
Documents.Add 'nötig um das Image zu aktualisieren,
refresh,repaint geht nicht
ActiveDocument.Close savechanges:=False
Application.ScreenUpdating = True
End Sub

Gruß
REinhard

Hey Reinhard,

sorry das ich nochmals störe. Das item „listbox_click“ habe ich gefunden und eingefügt nur eine Sache wäre jetzt noch.VB sagt mir das die Variable „Image1“ nicht definiert ist…daher meine frage - wie bzw als was wäre diese Variable zu definieren?

lg sewi

vielen vielen lieben dank für deine hilfe - is echt super!!
ich hätte da nur noch eine frage: was muss ich jetzt in word
eingeben, dass es an der gewissen stelle das bild einfügt? -
es genügt nicht einfach nur „1“ „2“ usw einzugeben!

Hallo Sewi,

ich habe etwas sehr Wichtiges vergessen, sorry.
In Word über Ansicht—Symbolleisten die Leiste Steuerelementtoolbox einblenden.

Fahre mit der Maus langsam über die Symbole dann werden ihre Namen angezeigt.
Füge ein „Bild“ und eine „Listenfeld“ ein.
Diese Objekte haben dadurch automatisch in vBa-code die Namen Image1 und ListBox1.

Durch das Einfügen bist du automatisch im Entwurfsmodus d.h. durch Klick auf eines der Objekte kannst du die Größen ändern usw.
Durch Rechtsklick darauf kannst du die Eigenschaften ansehen, ändern, das Objekt ausschneiden, also entfernen.

Übe das Ganze am besten in einer leeren Mappe, mit bißchen Beispieltext sodaß du auch das Positionieren üben kannst.
Du kannst soviel Objete erstellen oder wieder ausschneiden wie du willst.

In eer Listbox kommt unten ein Scrollbalken, mach sie einen Tick breiter dann isser weg.

Um sie benutzen zu können mußt du den Entwurfsmodus beenden, dazu ist da dieses Symbol mit dem Geodreicek.

Dann füge den Code ein, stelle dich in den Code von „Document_Open“ und drücke einmalig F5. Nun ist die Listbox gefüllt.
Jetzt halt da was auswählen…

Gruß
Reinhard

hey reinhard,

ich bin echt begeistert wie schnell die antworten kommen und deiner hilfe. ich bin dir sehr dankbar!

ich habe es natürlich gleich ausprobiert =). leider gibt mir das blöde word aus „laufzeitfehler ‚53‘“ an der stelle: „image1.picture = loadpicture…“

mbg sewi

hey nochmal, =)

mir ist echt nicht zu helfen…ich hab bemerkt das ich beim pfad das „.jpg“ vergessen hab…

es funktioniert echt toll!!!

vielen lieben dank nochmal

glg sewi