Registriert seit: 22.12.2016
Version(en): 210
26.01.2017, 11:15
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2017, 14:58 von Rabe.
Bearbeitungsgrund: Mini-Font lesbar gemacht
)
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 :)
Registriert seit: 14.04.2014
Version(en): 2003, 2007
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:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• simonimus
Registriert seit: 21.06.2016
Version(en): 2021
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:1 Nutzer sagt Danke an Ego für diesen Beitrag 28
• simonimus
Registriert seit: 22.12.2016
Version(en): 210
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)
Registriert seit: 22.12.2016
Version(en): 210
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...
Registriert seit: 22.12.2016
Version(en): 210
*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...
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
(08.02.2017, 10:37)simonimus schrieb: shpHeader.Left = CentimetersToPoints(5) wird einfach nicht gefressen...
vielleicht (nur geraten) so?
shpHeader.Left = wdoc.CentimetersToPoints(5)Gruß Uwe