Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bild einfügen und an letzter Spalte ausrichetn

Bild einfügen und an letzter Spalte ausrichetn
09.05.2008 14:35:00
legde
Hallo zusammen,
gibt es eine Möglichkeit mit VBA ein Bild einzufügen und anschließend so zu positionieren, dass
es am Ende meiner letzten Spalte rechtsbündig anliegt?
Das Bild füge ich so ein:
ActiveSheet.Pictures.Insert( _
"\\server\daten\Test.jpg"). _
Select
Die letzte Spalte ermittel ich so:
Dim LetzteSpalte As Integer
LetzteSpalte = Cells(5, Columns.Count).End(xlToLeft).Column
Nur das mit dem positionieren bekomme ich nicht hin.
Währe echt fein wenn da jemand eine Lösung für kennt.
Gruß, Wolle

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
09.05.2008 14:37:00
Hajo_Zi
Hallo Nick,
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden muss.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) – dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: „Das mache ich später“ ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: mit und ohne select
Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Zu Bildern schaue mal hier Bilder einfügen

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
09.05.2008 15:57:27
legde
Hi Hajo,
das ist interessant.
Wenn ich das gewusst hätte, dann hätte ich auf select verzichtet.
Jetzt währe es in der tat sehr Zeitaufwendig das im nachhinein alles raus zu nehmen.
Ich schau mal ob ich mit deinen Bilder Beispielen zurecht komme, ansonnsten melde ich mich noch mal.
Grüße

AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 13:36:48
legde
Hi Hajo,
habe als erstes mal Deinen Rat befolgt und alle Selects aus meinem Quellcode rausgeworfen und alles immer direkt angesprochen.
Danke Dir in jedem Falle schonmal für den Tip, macht die Ausführung des Codes schon erheblich schneller.
Jetzt zu meinem eigentlichen Problem. Ich habe mir deine Beispiele zu Bildern in den letzten Tagen angeschaut, aber leider konnte ich daraus nicht das ziehen was ich für mein Vorhaben brauche.
Vielleicht war ja irgend was dabei, aber es war einfach so viel, ich habe vielleicht auch was übersehen.
Ich konnte leider nicht herausfinden wie ich ein Bild mit der rechten oberen Ecke an der rechten oberen Ecke der ersten Zeile meiner letzten benutzten Spalte plazieren kann.
Gibt es dafür eine Möglichkeit, und wenn ja, wie würde diese Ausschauen.
Kannst Du mir da vielleicht nochmal auf die Sprünge helfen?
Güße

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 13:57:33
Hajo_Zi
Hallo Nick,
die letzte TZeile zu ermitteln ddütfte ja nicht das Problem sein, da gibt es viele Beispiele ium Forum.
Ich habe mir jetzt ein Beispiel gesucht und denm Code angepast.

With ActiveSheet.Shapes.AddPicture(StBild, True, True, Target.Offset(0, 1).Left -  _
DoBreite * DoBildhöhe / DoHohe, _
Target.Offset(0, 0).Top, DoBreite * DoBildhöhe / DoHohe, DoBildhöhe)
'               Veränderung im Aufruf von jinx, damit Bild groß wird bei Click
.OnAction = "Bild_BeiKlick"        ' Makro im Modul BeiKlick
End With


Gruß Hajo

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 14:20:00
legde
Nicht die letzte Zeile sondern die erste Zeile der letzten Spalte ist gemeint. Sollte aber irgendwie gehen.
Ich bastel mal rum und melde mich wieder. Danke Dir.
Gruß

AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 14:44:00
legde
Hmmm,
ich habe gerade echt ein riesen Brett vor dem Kopf.
Ich erkenne einfach nicht was ich genau anpassen muss, damit es bei mir läuft, weil ich einfach nicht verstehe welcher Parameter genau was macht.
Kannst du vielleicht das ganze letzte Beispiel:
With ActiveSheet.Shapes.AddPicture(StBild, True, True, Target.Offset(0, 1).Left - _
DoBreite * DoBildhöhe / DoHohe, _
Target.Offset(0, 0).Top, DoBreite * DoBildhöhe / DoHohe, DoBildhöhe)
so schreiben das keine anderen Programteile aufgerufen werden und alles mit festen Werten einstellen.
Habe das selber gerade versucht, aber dann gibt es immer einen Fehler.
Ich weiß nicht was ich gerade für ein Brett vorm Kopf habe, aber es muss ein riesen großes sein ;-)
Gruß

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 14:49:00
Hajo_Zi
Hallo Nick,
das ist zu aufwendig. Es wird bei diesem Beispiel die Bildhöhe und Breite es eingefügten Bildes ausgelesen.
Gruß Hajo

AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 15:39:07
legde
Und die einfachste Form?
Also einfach rechte obere Ecke des Bildes an rechte obere Ecke der Zelle Q1 einfügen?
Sagen wir der gesamte Pfad des Bildes ist c:\Temp\Bild.jpg
Kannst Du mir da eventuell weiter helfen?
Weil eigentlich reicht mir das, der Bildname und der Pfad bleiben nämlich immer gleich, weil immer nur an der richtigen Stelle das Firmenlogo eingefügt werden soll, das einzige was Variert ist dabei die Spalte, weil es in der Tabelle mal mehr und mal weniger Spalten gibt.
Danke in jedem Falle schonmal für Deine Hilfe.
Grüße

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 16:06:13
Hajo_Zi
Halo Nick,
es muss immer die Bildgröße ausgelesen werden, da Du rechts oben den Bezugspunkt hast. Falls Dein Bild immer die gleiche Größe hat ist es einfacher. Fü den Fall Poste Deinen Code den Du benutzen willst und ich arbeite es ein.
Gruß Hajo

AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 16:41:00
legde
Jo, es ist immer die selbe größe, wie gesagt, nur die Spalte Variert.
Den ganzen Code zu Posten währe etwas umfangreich, sind mehrere Module und das Modul ist sehr umfangreich.
Meist es reicht wenn ich Dir sage das die Bildgröße immer 150 * 150 ist?
Die Zelle in die Das Bild eingefügt werden soll ist Range(LetzteSpalte & ":1")
Wie gesagt, bisher hatte ich es ja so probiert:
xlAppl.ActiveSheet.Pictures.Insert( _
"\\mServer\daten\Verwaltung\Technik\Datenbank\Logos\Firma.jpg"). _
Select
Aber davon hattest Du mir ja zurecht abgeraten, außerdem konnte ich so ja auch nicht genau bestimmen, dass die rechte obere Ecke des Bildes in der rechten oberen Ecke von Range(LetzteSpalte & ":1") eingefügt werden soll. Das bild soll nämlich genau bündig mit der Tabelle abschließen.
Grüße

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 16:55:00
Hajo_Zi
Hallo Nick,
Du bist der Fachman. Dann benutze meinen Code.

With ActiveSheet.Shapes.AddPicture(StBild, True, True, Target.Offset(0, 1).Left -  _
DoBreite * DoBildhöhe / DoHohe, _
Target.Offset(0, 0).Top, DoBreite * DoBildhöhe / DoHohe, DoBildhöhe)
'               Veränderung im Aufruf von jinx, damit Bild groß wird bei Click
.OnAction = "Bild_BeiKlick"        ' Makro im Modul BeiKlick
End With


ersetze nur ).Left - DoBreite * DoBildhöhe / DoHohe, durch ).Left - 150,
Gruß Hajo

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 17:37:00
legde
Hmm, komm noch immer nicht zurecht.
Nehmen wir mal an wir haben nur den Code zum Bild einfügen und ich habe bisher in meinem Modul nur das:
Dim StBild As String
StBild = "\\Server\Daten\Verwaltung\Technik\Datenbank\Logos\Firma.jpg"
With xlAppl.ActiveSheet.Shapes.AddPicture(StBild, True, True, Target.Offset(0, 1).Left - _
150, _
Target.Offset(0, 0).Top, 150)
End With
Was fehlt mir dann noch zu meinem Glück?
Im Moment bekomme ich Objekt erforderlich.
Gruß

AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 17:52:31
Hajo_Zi
Hallo Nick,
Du hast nur die Bildbreite angegeben und nicht die Bildhöhe.
Gruß Hajo

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
14.05.2008 20:22:23
legde
Ich komme so nicht weiter.
Vielleicht liegt es daran, dass ich den gesamten Code nicht von Excel, sondern von Access aus ausführe.
Das hier funktioniert ohne Probleme:
xlAppl.ActiveSheet.Shapes.AddPicture _
"\\Server\Daten\Verwaltung\Technik\Datenbank\Logos\Firma.jpg", _
True, True, 100, 100, 150, 150
Aber leider kann ich mit der Methode noch nicht ohne weiteres das Bild an der Stelle positionieren, wo es dann hin soll.
Gibt es eine Möglichkeit die Breite in Pixel von Range("A1:" & LetzteSpalte & "1") zu ermitteln?
Wenn das Ginge könnte ich das Bild perfekt positionieren indem ich einfach die Tabellenbreite - Bildbreite als Leftposition angebe.
Wir nehmen mal an Tabellenbreite währe 1000 und steht in der Variable TabBreite
Das würde dann so aussehen:
xlAppl.ActiveSheet.Shapes.AddPicture _
"\\Server\Daten\Verwaltung\Technik\Datenbank\Logos\Firma.jpg", _
True, True, Tabbreite - 150, 10, 150, 150
Gibt es so eine Möglichkeit.
Mit der anderen Variante komme ich einfach nicht zurecht. Keine Ahnung ob ich es einfach nicht verstehe, oder ob es von Access aus einfach nicht funktioniert. Ich hänge da jetzt seit dem 09.05 dran und komme einfach keinen Schritt weiter, bitte hilf mir.
Wenn ich das hinbekommen habe, ist mein Modul zum Formatieren von Excel fertig und ich kann endlich wieder an den eigentlichen Datenbankfunktionen schrauben.
Gruß, Wolle

Anzeige
AW: Bild einfügen und an letzter Spalte ausrichetn
15.05.2008 09:49:00
legde
Hi Hajo,
erstmal nochmal vielen Dank für Deine Hilfe. Leider habe ich es mit Deinem Weg nicht verstanden.
Habe es inzwischen so gelöst:
Dim StBild As String
StBild = "\\Server\Daten\Verwaltung\Technik\Datenbank\Logos\Firma.jpg"
xlAppl.ActiveSheet.Shapes.AddPicture _
StBild, _
True, True, xlAppl.Range("A:" & Spalte).Width - 150, 10, 150, 55
So funktioniert es genau wie ich es brauche.
Schade, hätte gerne verstanden, wie es mit Deiner Lösung funktioniert hätte.
Grüße

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige