PDA

Vollständige Version anzeigen : Eingefügte Bilder umbennen


tadler
28.08.2017, 14:05
Hallo,

ich habe eine Excel-Tabelle mit sehr vielen Bildern in einer Spalte. Mittels eines Makro´s konnte ich in der Spalte daneben die Bildnamen auslesen.

Es zeigt sich leider, dass viele Namen (z.B. Bild 1) mehrmals vorkommen.

Gibts es eine Möglichkeit in einer Spalte einen neuen Namen zu schreiben und mit diesem dann das jeweilige Bild in der Zeile umzubenennen?

Vielen Dank für Eure Hilfe!!!

Muller2
28.08.2017, 15:22
Hallo,

klar geht, mit einem Change-Event, der Code kommt in das Modul Deines Tabellenblattes:
<pre style='background-color:#FFFFFF;border:thin solid #FF8080; padding:12px 24px; margin-left:12px; color:#000000'><span style='color:#0000EE'>Option</span> <span style='color:#0000EE'>Explicit</span> <span style='color:#0000EE'>Private</span> <span style='color:#0000EE'>Sub</span> Worksheet_Change(<span style='color:#0000EE'>ByVal</span> Target <span style='color:#0000EE'>As</span> Range) <span style='color:#0000EE'>Const</span> NAME_COLUMN <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> = <span style='color:#DDAA00'>3</span> <span style='color:#008000'>'// Namens- u. Bild-Spalte anpassen... </span> <span style='color:#0000EE'>Const</span> PICTURE_COLUMN <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Dim</span> objShape <span style='color:#0000EE'>As</span> Shape <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Not</span> Intersect(Target, Columns(NAME_COLUMN)) <span style='color:#0000EE'>Is</span> <span style='color:#0000EE'>Nothing</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>With</span> Target <span style='color:#0000EE'>If</span> .Count = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>For</span> <span style='color:#0000EE'>Each</span> objShape <span style='color:#0000EE'>In</span> Shapes <span style='color:#0000EE'>If</span> objShape.TopLeftCell.Column = PICTURE_COLUMN <span style='color:#0000EE'>And</span> _ objShape.TopLeftCell.Row = .Row <span style='color:#0000EE'>Then</span> objShape.Name = .Value <span style='color:#0000EE'>Set</span> objShape = <span style='color:#0000EE'>Nothing</span> <span style='color:#0000EE'>Exit</span> <span style='color:#0000EE'>For</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Next</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span><br><br><hr style='color: #FF8080; background-color: #3300B2; height: 1.5px;' /><br><br><p style='font-size: 8px; font-family: Verdana; text-align: right;'><a href='http://www.rholtz-office.de/index.php?index=vbahtml' target='_blank'>VBA/HTML - CodeConverter f&uuml;r Office-Foren</a><br>AddIn f&uuml;r Excel/Word 2000-2010 - komplett in VBA geschrieben von <a href='http://www.office-loesung.de/viewprofile19265.php'>Lukas Mosimann</a><br />Projektbetreuung durch mumpel</p><br /><br />Code erstellt und getestet in Office 14</pre>
Gruß, Muller2

Beverly
28.08.2017, 17:45
Hi,

schreibe den neuen Bildnamen z.B. in die Zelle links vom Bild, dann lassen sich die Bilder mit folgendem Makro umbenennen:

Sub Umbenennen()
Dim picBild As Picture
For Each picBild In ActiveSheet.Pictures
If Range(picBild.TopLeftCell.Address).Offset(0, -1) <> "" Then
picBild.Name = Range(picBild.TopLeftCell.Address).Offset(0, -1).Value
End If
Next picBild
End Sub


Bedingung ist, dass jeder Name nur einmalig vorkommt, sonst könnte es Problem geben.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

tadler
29.08.2017, 09:12
Hallo Muller2 und Karin,

vielen Dank für Eure Mühe aber irgendwie klappt´s bei mir nicht...

Makro Muller2:
Das Makro kriege ich nicht zum laufen....es wird erst gar nicht als Makro angezeigt. Davor hatte ich die Spalte A (neue Namen) = 1 und Spalte 2 (Spalte mit den Bilder) umbenannt.
Wie gesagt, es wird kein Makro angezeigt...

Const NAME_COLUMN As Long = 1 '// Namens- u. Bild-Spalte anpassen...
Const PICTURE_COLUMN As Long = 2

Makro Karin:
Das Makro wird angezeigt und ich kann es auch ausführen. Ich habe nichts verändert, die Bilder sind in Spalte B und die neuen Namen in der Spalte A (also links vom Bild). Es tut sich auch irgendetwas aber nach einigen Sekunden Laufzeit sind die Bilder leider nicht umbenannt worden.

Also, ich kenne mich mit Makros (VBA) leider nicht aus. Mache ich hier etwas falsch? Muss ich noch etwas anpassen?

Schon mal vielen Dank für Eure Hilfe...

Beverly
29.08.2017, 11:13
Hi,

dann lade mal eine abgespeckte Beispielmappe hoch, denn ich kann das nicht nachvollziehen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

tadler
29.08.2017, 14:21
Hallo,
ich versuche mal eine Datei hochzuladen...

Wie gesagt, in der Spalte A steht der neue Bildname (in Spalte C der aktuelle) und in Spalte B die Bilder.

Viele Grüße und Danke!!!

Muller2
29.08.2017, 17:17
Hallo,

ne da wird auch nix angezeigt, das ist eine Ereignisprozedur('Event-Macro'), die brauchst Du nicht manuell feuern, läuft automatisch ab, wenn Du den Namen einträgst und gehört zwingend in das Modul Deines Tabellenblattes...

Gruß, Muller2

Beverly
29.08.2017, 18:41
Hi,

lösche den kompletten Code aus deiner Mappe und schreibe das von mir gepostete Makro in das Modul1. Ändere den Code dabei außerdem wie folgt:

Sub Umbenennen()
Dim picBild As Shape
For Each picBild In ActiveSheet.Shapes
If Range(picBild.TopLeftCell.Address).Offset(0, -1) <> "" Then
picBild.Name = Range(picBild.TopLeftCell.Address).Offset(0, -1).Value
End If
Next picBild
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

tadler
30.08.2017, 08:36
Hallo,

juhu, jetzt gehts :)

Euch vielen Dank für die Hilfe!!!
Habt mir ne Menge Arbeit und Fehler erspart!

LG