Tabellen per Makro als Grafiken speichern

Hallo mal wieder,

ich erzeuge in Excel (Version 2003) in einem Workbook ca. 20 verschiedene Ansichten auf eine Quelldatei. Diese Ansichten kopiere ich dann mit „umschalt“ und Menü „bearbeiten“ als Bild in Power-Point. Damit ich das nicht jedes Mal wieder machen muss, hätte ich gerne ein Makro, das automatisch in jedem Arbeitsblatt die Tabelle markiert und als Grafik (gif oder jpeg) in einem Extra-Dateiordner abspeichert.
Bei Diagrammen ist das möglich, geht es auch bei Tabellen?

Vielen Dank für Eure Hilfe
Tina

ich erzeuge in Excel (Version 2003) in einem Workbook ca. 20
verschiedene Ansichten auf eine Quelldatei. Diese Ansichten
kopiere ich dann mit „umschalt“ und Menü „bearbeiten“ als Bild
in Power-Point. Damit ich das nicht jedes Mal wieder machen
muss, hätte ich gerne ein Makro, das automatisch in jedem
Arbeitsblatt die Tabelle markiert und als Grafik (gif oder
jpeg) in einem Extra-Dateiordner abspeichert.
Bei Diagrammen ist das möglich, geht es auch bei Tabellen?

Hi Tina,

probier diese zwei prozeduren mal aus, IrfanView gibts kostenlos im Internet.

Option Explicit
'
Sub ZuIrfanView()
Dim S As Double
Selection.Copy
S = Shell("C:\Programme\IrfanView\i\_view32.exe", vbMaximizedFocus)
Application.SendKeys "^v"
End Sub
'
Sub ZuPP()
Dim appPP As Object, Slide As Object
Selection.CopyPicture
Set appPP = CreateObject("PowerPoint.Application")
With appPP
 .Visible = True
 .Presentations.Add
 .ActivePresentation.Slides.Add 1, ppLayoutBlank
 Set Slide = .ActivePresentation.Slides(1)
 Slide.Shapes.Paste
End With
End Sub

Gruß
Reinhard

Tina

dafür gibt es Snipping Tool
(für Vista [schon eingebaut] aber auch für XP (und andere ?)

mfG
Hermes

Hallo Reinhard,

vielen Dank erstmal. Bei der ersten Prozedur fügt er mir die Zeilen-/und Spaltenbezeichnungen in meinen Code ein?? Er öffnet brav vorher IrfanView aber dann… Komisch…

Die zweite habe ich leider noch nicht ausprobiert.

Ich habe noch einen alten Code, mit dem ich Diagramme als Bild gespeichert habe, das würde mir ja auch schon reichen. Dann kann sich jeder die Ansicht aussuchen, die er gerade braucht?! Kann ich dasselbe denn nicht irgendwie über die Zwischenablage auch mit meiner Tabelle machen?

 Sub Bild\_export()
 Dim chtPicture As Chart
 Dim strSheetName As String
 Application.ScreenUpdating = False
 strSheetName = ActiveSheet.Name
 ActiveSheet.Range("A1:BE24").CopyPicture Appearance:=xlScreen, Format:=xlPicture
 Set chtPicture = Charts.Add
 chtPicture.Paste
 chtPicture.Export ActiveWorkbook.Path & "\" & strSheetName & ".gif"
 Application.DisplayAlerts = False
 chtPicture.Delete
 Application.DisplayAlerts = True
 Set chtPicture = Nothing
 Application.ScreenUpdating = True
End Sub 

Viele Grüße und danke wie immer für die gute Hilfe!

Tina

Hallo Hermes,

dafür gibt es Snipping Tool
(für Vista [schon eingebaut] aber auch für XP (und andere ?)

probiere es gerade erstmal mit IrfanView, scheint unter XP einfacher zu sein?!

Vielen Dank
Tina

Hallo Tina,

vielen Dank erstmal. Bei der ersten Prozedur fügt er mir die
Zeilen-/und Spaltenbezeichnungen in meinen Code ein?? Er
öffnet brav vorher IrfanView aber dann… Komisch…

nö, nicht komisch, Sendkeys knallt seinen Text immer irgendwo darein wo grad ein Fenster offen ist, deshalb sollte man es wenn es geht auch immer vermeiden.

Starte mal den Code durch eine Schaltfläche aus „Formular“ der du das makro zuweist, dann klappt das (naja meist, Sendkeys ist da seltsam *gg*)

Die zweite habe ich leider noch nicht ausprobiert.

Ich hab Zeit :smile:

Ich habe noch einen alten Code, mit dem ich Diagramme als Bild
gespeichert habe, das würde mir ja auch schon reichen. Dann
kann sich jeder die Ansicht aussuchen, die er gerade braucht?!
Kann ich dasselbe denn nicht irgendwie über die Zwischenablage
auch mit meiner Tabelle machen?

Jain, mit der Zwischenablage geht es nicht, aber es geht grundsätzlich, ich sah schon entsprechenden Code, aber farg mich mal wo und wann :frowning:

Ich schau mal morgen wo der Code ist, wenn ich übermorgen noch nict geantwortet hae, dann frage ruhig hier nach ob ich noch „schaue“, dann hab ich das nämlich vergessen zu tun :smile:)

Gruß
Reinhard

Hallo Reinhard,

nö, nicht komisch, Sendkeys knallt seinen Text immer irgendwo
darein wo grad ein Fenster offen ist, deshalb sollte man es
wenn es geht auch immer vermeiden.

Ja, das würde ich ja gerne tun, aber…

Starte mal den Code durch eine Schaltfläche aus „Formular“ der
du das makro zuweist, dann klappt das (naja meist, Sendkeys
ist da seltsam *gg*)

Finde das alles öfter mal seltsam!! Aber o.k. das mache ich mal!

Jain, mit der Zwischenablage geht es nicht, aber es geht
grundsätzlich, ich sah schon entsprechenden Code, aber farg
mich mal wo und wann :frowning:

Ich schau mal morgen wo der Code ist, wenn ich übermorgen noch
nict geantwortet hae, dann frage ruhig hier nach ob ich noch
„schaue“, dann hab ich das nämlich vergessen zu tun :smile:)

Ähem, ich glaub es ist übermorgen - schaust Du noch? :wink:

Danke und Grüße
Tina

Code gefunden?
Hallo Reinhard,
ich sollte Dich erinnern, falls Du Dich nicht bis „übermorgen“ gemeldet hast.

Habe auf meiner Suche nach einer Lösung folgenden Code gefunden, komme damit aber nicht klar…

Bei Interesse, schau mal unter http://www.geocities.com/davemcritchie/excel/xl2gif.htm

Das ist zwar mehr für die Umsetzung der Grafiken in HTML gedacht, müsste aber doch egal sein?? Habe es auch schon mal getestet, habe aber immer Fehlermeldungen, dass ich irgendwelche Objektvariablen nicht definiert habe etc. - komme noch nicht drauf.
Kannst Du mir weiterhelfen?

Viele Grüße
Tina

Hallo Tina,

ich sollte Dich erinnern, falls Du Dich nicht bis „übermorgen“
gemeldet hast.

ja, ist ja auch richtig, gelegentlich geht bei mir was „unter“.

Bei Interesse, schau mal unter
http://www.geocities.com/davemcritchie/excel/xl2gif.htm

Das ist zwar mehr für die Umsetzung der Grafiken in HTML
gedacht, müsste aber doch egal sein?? Habe es auch schon mal
getestet, habe aber immer Fehlermeldungen, dass ich
irgendwelche Objektvariablen nicht definiert habe etc. - komme
noch nicht drauf.

Ich habe in XL2000 den Code in ein Modul gesteckt, dann „GIF_Snapshot“ gestartet konnte damit mühelos einen Zellenbereich als Gif abspeichern.

Ohne irgendwelche Fehlermeldungen.

Beschreibe mal bitte genauer in welcher Zeile des Codes etwas bei dir bemängelt wird vom Debugger.

Gruß
Reinhard

Kannst Du mir weiterhelfen?

Viele Grüße
Tina

Hallo Reinhard

ja, ist ja auch richtig, gelegentlich geht bei mir was
„unter“.

Kenne ich :smile:

Ich habe in XL2000 den Code in ein Modul gesteckt, dann
„GIF_Snapshot“ gestartet konnte damit mühelos einen
Zellenbereich als Gif abspeichern.

Bin vielleicht manchmal etwas zu doof um das richtige Makro auszuführen! :B
Habe mich natürlich „von oben runtergearbeitet“ und dann geht es nicht. Wenn ich mit GIF_Snapshot starte, bekomme ich natürlich auch ein Gif!!!

Jetzt arbeite ich mich mal weiter durch, möchte gerne, dass der Tabellenbereich automatisch markiert wird und dass er dann Sheet für Sheet abarbeitet. Gibt es sowas wie eine Funktion „Next Worksheet“?

Vielen Dank wie immer für den „Anschubser“ meines Gehirns!
Tina

Hallo Tina,

Jetzt arbeite ich mich mal weiter durch, möchte gerne, dass
der Tabellenbereich automatisch markiert wird und dass er dann
Sheet für Sheet abarbeitet. Gibt es sowas wie eine Funktion
„Next Worksheet“?

könnte man basteln so eine Funktion, aber wie stellst du dir die automatische markierung vor ? Wie kriegt ein Makro die Information welcher zellenbereich gemeint ist?

Vielen Dank wie immer für den „Anschubser“ meines Gehirns!

-) ich „schubs“ lieber andere als mir selbst Schläge auf den Hinterkopf zu versetzen, wär zwar oft nötig, aber ist so nervig dieses „Denken“ *lächel*

Gruß
Reinhard

Hallo Reinhard

könnte man basteln so eine Funktion, aber wie stellst du dir
die automatische markierung vor ? Wie kriegt ein Makro die
Information welcher zellenbereich gemeint ist?

ich kann doch die letzte „benutzte“ Zeile und Spalte herausfinden über:

rletzte = Range("A65536").End(xlUp).Row 'letzte Zeile
cletzte = .Range("IV2").End(xlToLeft).Column 'letzte Spalte
.Range(.Cells(1,1); .Cells(cletzte, rletzte)).Select

so oder so ähnlich???

-) ich „schubs“ lieber andere als mir selbst Schläge auf den Hinterkopf zu versetzen, wär zwar oft nötig, aber ist so nervig dieses „Denken“ *lächel*

Tja, aber sehr männlich (äh menschlich *grins*)
Grüße und danke
Tina

Hallo Tina,

könnte man basteln so eine Funktion, aber wie stellst du dir
die automatische markierung vor ? Wie kriegt ein Makro die
Information welcher zellenbereich gemeint ist?

ich kann doch die letzte „benutzte“ Zeile und Spalte
herausfinden über:

rletzte = Range(„A65536“).End(xlUp).Row 'letzte
Zeile
cletzte = .Range(„IV2“).End(xlToLeft).Column 'letzte Spalte
.Range(.Cells(1,1); .Cells(cletzte, rletzte)).Select

so oder so ähnlich???

eher so ähnlich :smile:, aber nur aus Kleinigkeitsgründen.

Soll ich das eben und dieses:

Jetzt arbeite ich mich mal weiter durch, möchte gerne, dass der Tabellenbereich automatisch markiert wird und dass er dann Sheet für Sheet abarbeitet. Gibt es sowas wie eine Funktion „Next Worksheet“?

so verstehen, daß du in allen Worksheets einer Mappe vom jeweils benutzten Bereich ein Bild erstellen und abspeichern willst?

-) ich „schubs“ lieber andere als mir selbst Schläge auf den Hinterkopf zu versetzen, wär zwar oft nötig, aber ist so nervig dieses „Denken“ *lächel*

Tja, aber sehr männlich (äh menschlich *grins*)

Danke dir, jetzt weiß ich endlich warum eigentlich Frauen im Bad Stunden zubringen, die hauen sich dann dort auf den Hinterkopf um das „Denken“ anzuregen.
das ist dann für das arme Frauenhirn zuviel und es produziert logische Gedankenfehler nach dem anderen am Band *auchschwergrins*

Hinweis, damit meine ich jetzt absolut nicht die Logik in Excel oder so, nö, nur das zwischenmenschliche.

Aber, das ist ein komplexes Thema, schon seit Jahrtausenden ungelöst und das wird auch so bleiben :smile:

Gruß
Reinhard