Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Bild einbetten und ansprechen (ohne Pfadangabe)
#1
Hallo,

ich habe ein Excel Sheet, in dem über ein Button ein Worddokument erzeugt werden kann (die dazugehörigen Inhalte werden aus dem Excel Sheet in das zu erzeugende Word Dokument gezogen).
Das Worddokument soll zwei Logos enthalten, eins in der Kopfzeile, eins in der Fußzeile. Auf Seite 2 ist in der Kopfzeile zusätzlich eine kleine Tabelle enthalten.

Bisher lade ich die Logos über:

strLogo = "C:\Users\logo.png"
.Headers(wdHeaderFooterFirstPage).Shapes.AddPicture Filename:=strLogo, LinkToFile:=False, SaveWithDocument:=True, Left:=398, Top:=9

Da ich nun aber unabhängig vom Pfad sein möchte (es greifen mehrere Nutzer darauf zu, die teilweise nicht mit dem Netzwerk verbunden sind), suche ich nach einer Möglichkeit das Logo direkt aus dem Sheet zu ziehen.

Kennt jmd. eine Möglichkeit? Bisher ist es mir nicht gelungen das Logo anzusprechen (hinzugefügt über "Grafik einfügen")

Bitte um Hilfe :)
Antworten Top
#2
Hallo,

wenn Du das Logo im gleichen Ordner ablegst wie die Datei, dann kannst Du mit Activeworkbook.Path den Ordner von überall ansprechen, mal testen.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • simonimus
Antworten Top
#3
Hallo Simon,

ich habe die Anfrage so verstanden, dass die Grafik schon in der Exceldatei vorhanden sind.

In Excel sind Grafiken "shape" und werden so angesprochen:

Dim oShape As Shape
Set oShape = Sheets(Sheet-Name).Shapes(ShapeName)

Den Namen bekommst du in der Bearbeitungszeile links angezeigt, wenn du die Grafik anklickst.
Hier kannst du den Namen auch ändern damit das Programm lesbarer wird.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • simonimus
Antworten Top
#4
Vielen Dank für die Antworten.

Das Ansprechen des Logos funktioniert, nur bisher liegt das Logo extern unter bspw. C:\logo.png

Ich möchte aber das logo.png direkt in das Excel-Sheet einbinden und dann ansprechen, sodass das logo.png unter C:\logo.png gelöscht werden kann.

Hintergrund: Die Exceldatei liegt im Netzwerk und es greifen auch teilweise Nutzer drauf zu, die zeitweise nicht mit dem Netzwerk verbunden sind (dann wird das logo natürlich nicht angezeigt da auf den Pfad nicht zugegriffen werden kann)
Antworten Top
#5
Ich benötige nochmal Hilfe

Inzwischen habe ich folgenden Code stehen:

Code:
Dim shpHeader As Word.Shape
Dim objHeader As Word.InlineShape    

With .Sections(1)
   
   'Kopfzeile auf erster Seite einfügen
   
   ActiveWindow.View = xlNormalView
   Range("H14:H18").Select
   Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
       
   Set objHeader1 = wdoc.Sections(1).Headers(wdHeaderFooterFirstPage).Range
   objHeader1.Paste
                 
   Set shpHeader = objHeader1.InlineShapes(1).ConvertToShape
   
   
        'With shpHeader
        'shpHeader.Left = InchesToPoints(3.3)
        'shpHeader.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
        'shpHeader.Left = CentimetersToPoints(50)
        'End With

Das Bild wird erfolgreich aus den Zellen H14:H18 gezogen und in der Kopfzeile des Word-Dokuments eingefügt.
Leider funktioniert die Positionierung nicht. Ich möchte dem Bild feste Positionen geben (rechtsbündig alleine genügt nicht).

Kann jmd. helfen?
"shpHeader.Left = InchesToPoints(3.3)" funktioniert nicht...
Antworten Top
#6
*push*

Code:
   'Kopfzeile auf erster Seite einfügen
   
   
   ActiveWindow.View = xlNormalView
   Range("H14:H18").Select
   Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
       
   Set objHeader1 = wdoc.Sections(1).Headers(wdHeaderFooterFirstPage).Range
   objHeader1.Paste
                     
   Set shpHeader = objHeader1.InlineShapes(1).ConvertToShape
         

         
   shpHeader.RelativeHorizontalPosition = wdRelativeHorizontalPositionRightColumn
   shpHeader.RelativeVerticalPosition = wdRelativeVerticalPositionParagraph
   shpHeader.Left = CentimetersToPoints(5)
   shpHeader.Top = CentimetersToPoints(5)


shpHeader.Left = CentimetersToPoints(5) wird einfach nicht gefressen...
Antworten Top
#7
Hallo,

(08.02.2017, 09:37)simonimus schrieb: shpHeader.Left = CentimetersToPoints(5) wird einfach nicht gefressen...

vielleicht (nur geraten) so?

shpHeader.Left = wdoc.CentimetersToPoints(5)

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste