Herbers Excel-Forum - das Archiv

Grafik in der Kopfzeile - OHNE PFADANGABE

Bild

Betrifft: Grafik in der Kopfzeile - OHNE PFADANGABE
von: Roland Vogler

Geschrieben am: 02.07.2008 13:50:17

Mit folgendem Code kann ich eine Grafik in die Kopfzeile einfügen:

Sub LogoInKopfzeileEinfügen()
ActiveSheet.PageSetup.RightHeaderPicture.Filename = "M:\Logo.tif"
ActiveSheet.PageSetup.RightHeader = "&G"
End Sub


Mein Problem ist:
Die Excel-Datei soll von einem Webserver geladen werden. D.h. ich möchte das Logo als Teil meiner Excel-Tabelle laden und nicht aus einem Verzeichnis auslesen.
Fragen:
Ist es möglich, ein Logo welches ich als Objekt in einer (verborgenen) Excel-Tabelle bereitstelle in die Kopfzeile einzufügen. Z.B. indem ich das Logo zuerst aus meiner Exce-Mappe exportiere um es dann wieder in die Kopfzeile einzulesen?
- oder -
Kann ich das PageSetup-Objekt oder das Logo aus der Kopfzeile eines andern Excel-Blattes in mein neues Blatt kopieren?
Was nicht geht:
Die Report-Seiten werden in einem neu erstellten Arbeitsblatt aufgebaut. Deshalb kann ich das Logo nicht vorher in der Kopfzeile abspeichern.
Einzelne Seiten werden auf Seitenbreite skaliert. Das Logo soll auf allen Seiten gleich gross sein. Deshalb kann es nicht in eine Wiederholungszeile eingefügt werden.
Bin für alle Tipps dankbar.
Roland

Bild

Betrifft: AW: Grafik in der Kopfzeile - OHNE PFADANGABE
von: fcs

Geschrieben am: 03.07.2008 13:21:55
Hallo Roland,
lege in deiner Datei eine leere Muster-Tabelle an in der das Logo in der gewünschten Form vorhanden ist. ggf. kannst du dem Muster auch schon ein paar Grundeinstellungen (Seite einrichten, Kopf- Fusszeile etc) verpassen, die dann nicht vom Makro erstellt werden müssen.

'Die neue Arbeitsmappe wird jetzt nicht mehr mit
Set wbNeu = Workbooks.Add(Template:=xlWBATWorksheet)
'angelegt mit
With ThisWorkbook.Worksheets("Muster")
.Visible = xlSheetVisible
.Copy
Set wbNeu = ActiveWorkbook
.Visible = xlSheetHidden
End With


Gruß
Franz

Bild

Betrifft: AW: Grafik in der Kopfzeile - OHNE PFADANGABE
von: Roland Vogler

Geschrieben am: 03.07.2008 18:15:52
Hallo Franz
Danke für deine Antwort. Diese Idee hatte ich auch schon. Funktioniert theoretisch auch. In der Praxis gibt es aber Probleme wenn du eine Tabelle zu oft kopierst. Sobald eine Tabelle einen benannten Bereich (d.h. einen Namen) enthält stürzt Excel nach dem 255 Kopiervorgang ab.
Definier in einem Blatt einen Namen. Ergänze deinen Code so, dass das Blatt unmittelbar nach dem Kopieren wieder gelöscht wird und pack das ganze in eine Schleife. Das Ding stürzt 100%-ig ab nach dem 255-igsten Durchlauf ab.
Meine Tabelle ist etwas komplexer. Hier passiert der Absturz bereits nach der 45-igsten Kopie.
Ist so - muss man damit leben. Details dazu findest du in folgendem KB-Artikel: http://support.microsoft.com/kb/210684/en-us
Gruss Roland

Bild

Betrifft: AW: Grafik in der Kopfzeile - OHNE PFADANGABE
von: fcs

Geschrieben am: 04.07.2008 10:37:22
Hallo Roland,
wenn das Vielfach-Kopieren des gleichen Blattes innerhalb der selben Arbeitsmappe so wichtig/kritisch ist, dann muss du die Arbeitsmappe bei Auftreten des Fehlers speichern, schließen und wieder öffnen. Dann klappt es.
Alternativ kann man das immer Musterblatt aus der Masterdatei in die neue Arbeitsmappe kopieren.
Gruß
Franz

Sub BlattCopy01()
Dim wbNeu As Workbook, i As Integer
'Die neue Arbeitsmappe anlegen
Set wbNeu = Workbooks.Add(Template:=xlWBATWorksheet)
'Musterblatt vielfach in die neue Arbeitsmappe kopieren
With ThisWorkbook.Worksheets("Muster")
.Visible = xlSheetVisible
For i = 1 To 275
.Copy after:=wbNeu.Sheets(wbNeu.Sheets.Count)
Set wksNeu = ActiveSheet
wksNeu.Name = "Tab" & Format(i, "000")
Next
.Visible = xlSheetHidden
End With
End Sub
Sub BlattCopy02()
Dim wbNeu As Workbook, i As Integer, wksNeu, strNeu As String, Auswahl As Variant
'neue Arbeitsmappe erstellen
On Error GoTo Fehler
ThisWorkbook.Worksheets("Muster").Copy
Set wbNeu = ActiveWorkbook
'Blatt Muster innerhalb der neuen Datei kopieren
For i = 1 To 275
wbNeu.Worksheets("Muster").Copy after:=wbNeu.Sheets(wbNeu.Sheets.Count)
Set wksNeu = ActiveSheet
Application.DisplayAlerts = False
wksNeu.Delete
Application.DisplayAlerts = True
Next
Fehler:
If Err.Number <> 0 Then
If Err.Number = 1004 Then
Speichern:
Auswahl = Application.Dialogs(xlDialogSaveAs).Show
If Auswahl = False Then
If MsgBox("Ohne speichern der Datei wird das Makro jetzt abgebrochen! Doch speichenr?",  _
_
vbYesNo) = vbNo Then
Else
GoTo Speichern
End If
End If
strNeu = wbNeu.FullName
wbNeu.Close
Set wbNeu = Workbooks.Open(Filename:=strNeu)
Resume
Else
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
End If
End If
End Sub


Bild

Betrifft: AW: Grafik in der Kopfzeile - OHNE PFADANGABE
von: Roland Vogler

Geschrieben am: 04.07.2008 11:48:59
Hallo Franz
Danke für deine Antwort. Zwei schöne Lösungen – welche ich mir merken werde. Hätte ich das alles schon am Anfang gewusst sähe meine Lösung heute ganz anders aus.
Im konkreten Fall muss ich nicht wirklich ein Blatt so oft kopieren. Mit meiner Applikation berechne ich Anlagevorschläge, wobei einzelne Blätter (maximal 6 mal) dupliziert werden. Dennoch ist es zurzeit so, dass beim Berechnen des 8-ten Anlagevorschlags der Absturz bei Kopieren eines Blattes auftritt. Ich werden einen Zähler einbauen, in dem ich zähle wie viele Anlagevorschläge berechnet sind und werde den Benutzer nach dem 7-ten auffordern, die Anwendung manuell zu schliessen und wieder zu öffnen. Dies ist zulässig, weil in der Regel nicht so viele Anlagevorschläge hintereinander erstellt werden.
Ich bin nun vorsichtig und vermeide das Kopieren von Blättern um die Zahl von 8 hintereinander berechenbaren Anlagevorschlägen nicht noch weiter nach unten zu treiben.
Deshalb habt ich zusammen mit einem Arbeitskollegen für das Logo-Problem inzwischen folgenden (zugegeben exotischen) Workaround gesucht und gefunden: Ich exportiere das Logo einmalig ins Temp-Verzeichnis und lade es bei Bedarf von dort in die Kopfzeile. Da man ein Grafikobjekt nicht exportieren kann "verpacke" ich es in einem Chart – und ein Chart kann als GIF-Datei exportiert werden.
Gruss Roland

 Bild
Excel-Beispiele zum Thema "Grafik in der Kopfzeile - OHNE PFADANGABE"
Grafik in Kopfzeile Export von Diagrammen im Grafikformat
Grafiken im Tabellenblatt ordnen Grafiken an eine Seite anpassen
Grafik einfügen, wenn Wert in A1 unter eine Grenze sinkt Grafikprogramm aufrufen und Bild laden
Grafik in Abhängigkeit einer Zelleingabe einfügen Grafik nach Doppelklick laden
Grafiken aus ausgeblendeten Blättern einblenden Grafik nach Eingabe des Dateinamens einfügen