Aufgenommenes Marko funktioniert nicht

Hallo zusammen.

Ich möchte das Einfügen eines Bildes in die Druckansicht automatisieren und habe dafür den entsprechenden Code aufgezeichnet. Wenn ich nun im entsprechenden Blatt den Code ausführe, ist kein Bild mehr in der Druckansicht. Das geht doch eigentlich gar nicht, oder doch? Der Code steckt in einem allgemeinen Modul und sieht wie folgt aus:

ActiveSheet.PageSetup.RightHeaderPicture.Filename = _
„X:\XX\XX\Logo.jpg“
With ActiveSheet.PageSetup
.LeftHeader = „“
.CenterHeader = „“
.RightHeader = „&G“
.LeftFooter = „“
.CenterFooter = „“
.RightFooter = „&D“
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.35)
.TopMargin = Application.InchesToPoints(1.33)
.BottomMargin = Application.InchesToPoints(0.61)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.32)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlOverThenDown
.BlackAndWhite = False
.Zoom = 94
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

Grüße.

Ich möchte das Einfügen eines Bildes in die Druckansicht
automatisieren und habe dafür den entsprechenden Code
aufgezeichnet. Wenn ich nun im entsprechenden Blatt den Code
ausführe, ist kein Bild mehr in der Druckansicht. Das geht
doch eigentlich gar nicht, oder doch? Der Code steckt in einem
allgemeinen Modul und sieht wie folgt aus:

Hallo Kackei,

am Code liegt es nicht, getestet mit XL2007.
Probiers mal mit einem kleineren Bild.
Mehr fällt mir dazu nihct ein.

Gruß
Reinhard

Ich würde die erste Referenz auf ActiveSheet auch in die With-Anweisung tun. Es geschehen nämlihc merkwürdige Dinge in VBA, wie zum Beispiel die Verschiebung der Referenz. Hatten wir kürzlich bei ActiveCell auch.

Hallo.

Ich würde die erste Referenz auf ActiveSheet auch in die
With-Anweisung tun. Es geschehen nämlihc merkwürdige Dinge in
VBA, wie zum Beispiel die Verschiebung der Referenz. Hatten
wir kürzlich bei ActiveCell auch.

Ich habe das jetzt so probiert:

With ActiveSheet.PageSetup
RightHeaderPicture.Filename = „X:\XX\XX\Logo.jpg“
.LeftHeader = „“
.CenterHeader = „“
.RightHeader = „&G“
.LeftFooter = „“
.CenterFooter = „“
.RightFooter = „&D“
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.35)
.TopMargin = Application.InchesToPoints(1.33)
.BottomMargin = Application.InchesToPoints(0.61)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.32)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlOverThenDown
.BlackAndWhite = False
.Zoom = 94
.PrintErrors = xlPrintErrorsDisplayed
End With
ActiveWindow.SelectedSheets.PrintPreview

Hat aber leider nichts gebracht. Danke aber für die Idee.

Grüße.

a) gibt es das Bild wirklich? Wenn ja, kannst Du es mal auf ein Tabellenblatt legen, um zu sehen, ob Excel beim Importieren in die Kopfzeile da Konvertierungen vornimmt, die dazu führen, daß das Bild weiß wird?

b) Der auf diese Internetseite kopierte Code wurde verändert (sonst wäre der Dateiname des Bildes anders). Hast Du beim Kopieren den Punkt vor der ersten Zeile der With-Anweisung vergessen?
Oder fehlt der Punkt im Code? Dann wäre alles klar: Du würdest nicht den Befehl ausführen, den Du wolltest (ActiveSheet.Right…), sondern einen anderen (den es gar nicht gibt).

Warum aber kriegst Du keine Fehlermeldung? Arbeitest Du mit OnErrorResumeNext? Das würde ich erst tun, wenn ich mir sicher wäre, daß alle Syntax- und logischen Fehler raus sind.

Hallo.

a) gibt es das Bild wirklich? Wenn ja, kannst Du es mal auf
ein Tabellenblatt legen, um zu sehen, ob Excel beim
Importieren in die Kopfzeile da Konvertierungen vornimmt, die
dazu führen, daß das Bild weiß wird?

Ich hatte den Code ja aufgenommen und beim Aufnehmen hatte es funktioniert. Hätte ich es nicht aufgenommen, dann würde ich mich nicht wundern.
Das mit dem Imporiteren habe ich auch probiert - da gab es keinerlei Probleme. Wurde vollständig und korrekt angesprochen.

b) Der auf diese Internetseite kopierte Code wurde verändert
(sonst wäre der Dateiname des Bildes anders). Hast Du beim
Kopieren den Punkt vor der ersten Zeile der With-Anweisung
vergessen?
Oder fehlt der Punkt im Code? Dann wäre alles klar: Du würdest
nicht den Befehl ausführen, den Du wolltest
(ActiveSheet.Right…), sondern einen anderen (den es gar
nicht gibt).

Ich habe den Punkt tatsächlich nur beim Kopieren vergessen. In der entsprechenden EXCEL-Datei steht der Punkt drin.

Warum aber kriegst Du keine Fehlermeldung? Arbeitest Du mit
OnErrorResumeNext? Das würde ich erst tun, wenn ich mir sicher
wäre, daß alle Syntax- und logischen Fehler raus sind.

Da ich das mit dem OnErrorResumeNext noch nicht verstanden habe, benutze ich es in diesem Fall nicht.

Grüße und Dank für die Ideen. Ich werde es dann jetzt wohl doch händisch und über einen Umweg machen müssen.

Ich habe gerade mal in meinem Excel geguckt. Ist leider zu alt, kennt die Eingeschaft RightHeaderPicture nicht. Deshalb müßtest Du selber gucken.

Im VB-Editor den Cursor auf die Eigenschaft mit dem Bild stellen. F1 drücken. Dann müßte - bei installierter VBA-Hilfe - die Syntax angezeigt werden, die die erfolgreiche Verwendung dieser Eigenschaft voraussetzt. Vielleicht fehlt außer dem Parameter „Filename“ noch irgend ein weiterer (vielleicht ein boolescher), der die Anzeige steuert.

Ich bin ganz zuversichtlich. Wir kriegen Excel schon dazu, das Bildchen anzuzeigen. Richtig rechnen kann man Excel schließlich ja auch beibringen (-> Fließkommaproblematik)…

Nachtrag zu meinem letzten Post:

a) Es könnte weiter sein, daß es die von Dir angegebene Eigenschaft gar nicht gibt, jedenfalls auf dem System, auf dem Du das Makro ausführst. Beispiel: Du zeichnest das Makro bei einem Freund / im Büro auf, aber zuhause läuft es nicht, weil dort eine andere Excel-Version ist.

b) Was weißt Du von Option Explicit? Es bedeutet, daß Variablendeklaration erforderlich ist.
Beispiel:

  • Wenn es jetzt die nicht funktionierende Eigenschaft RightHeaderPict… nicht gibt und Option Explicit fehlt, definiert VBA zur Laufzeit Deines Makros automatisch einen Variant namens RightHeaderPict…, der sogar mit einem Wert gefüllt wird. Da meckert VBA nicht und Du guckst in die Röhre.
  • Wenn aber im gleichen Szenario Option Explicit gesetzt ist, reagiert VBA an der gleichen Stelle mit „Variable nicht definiert“ oder irgendeinem ähnlichen Fehler (BTW: wegen dem idiotischen Variant würde das blöde VBA allerdings auch in diesem Fall TypeMismatches schlucken, die man anders abfangen müßte).

Deshalb setze bitte Option Explicit, indem Du das in die allererste Zeile mit dem reklamierten Modul tippst, und poste nochmal. Wenn ich die Fehlernummern kriege, kann ich mehr sagen.