Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bilder

Bilder
23.03.2020 20:50:04
stef26
Hallo liebe Excelprofis,
ich könnte bei einem Problem was ich habe eure Hilfe gebrauchen.
Ich habe in einem Tabellenblatt "Erde" ist die Erde abgebildet. Diese besteht aus ca. 200 Ländern, welche je in einem Shape dargestellt ist. Der Name des Shapes entspricht dem Namen des Landes.
In einem 2ten Tabellenblatt "Bild" zeigt ein Shape auf den Bildschirmausschnitt auf Tabelle"Erde"
Ich würde nun gerne ein Makro starten, welches folgendes macht:
Anzahl der Shapes zählen
Schleife mit Anzahl
alle Bilder ausblenden bis auf Shape1
Das Bild im Tabellenblatt "Bild" in eine Bilddateil (jpg) speichern mit dem Namen des Shapes, welches nicht ausgeblednet wurde.
Alle Shapes wieder einblenden
2te Runde der Schleife
Alle Bilder bis auf Shape 2 ausblenden
usw.
Anbei ein kleines Beispiel mit nur ein paar Ländern, damit die Größe nicht überschritten wird...
https://www.herber.de/bbs/user/136056.xlsx
Ziel ist es, dass ich auf dem Laufwerk 200 Bilder habe. wenn ich den Hintergrund ausblende und die Bilder übereinander lege, dass ich dann wieder die Erde habe.
Ist das machbar?
Gruss
Stefan

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder
24.03.2020 07:05:18
stef26
Guten Morgen,
hätte noch nen Nachtrag. Wenn das mit dem Speichern des Bildes zu komplex werden sollte, würde es mir auch schon ausreichen, wenn jedes Bild in einem neuen Tabellenblatt geschrieben wird.
Dann würde ich manuell die Bilder speichern...
:-)
Stefan
AW: VBA
24.03.2020 09:36:00
Fennek
Hallo,
der Code lief imSheet "Erde"

'speichert Shapes unter ihrem Namen als jpg
Sub Shape_save()
Dim WS As Worksheet: Set WS = ActiveSheet
Dim Cht As Chart
Pfad = "c:\users\xxxx\desktop\" ' >>
With WS
For i = 1 To .Shapes.Count
.Shapes.AddChart.Select
Set Cht = ActiveChart
.Shapes(i).Copy
expo = Pfad & .Shapes(i).Name & ".jpg"
With Cht
Cht.Parent.Width = WS.Shapes(i).Width
Cht.Parent.Height = WS.Shapes(i).Height
.Paste
.Export expo, "jpg"
.Parent.Delete
End With
Next i
End With
End Sub
mfg
Anzeige
AW: VBA
24.03.2020 11:30:26
stef26
Hallo Fennek,
danke für die Unterstützung.
Es ist es noch nicht ganz. Aber schon sehr nahe dran.
Abgespeichert möchte ich nicht das Land haben, sondern das Land wie es im gesamten Bild liegt.
Deshalb ist im Tabellenblatt Bild auf das Tabellenblatt verwiesen.
Du kannst zum Beispiel mal Russland löschen und dann auf das Tabellenblatt Bild schauen.
Diese Ansicht möchte ich für jedes Land haben. D.h. es müssen alle anderen Länder ausgeblendet sein.
Gruß
Stefan
AW: Weltkarte
24.03.2020 12:42:47
Fennek
Hallo,
das Speichern von Shapes ist ein bisschen ungewöhnlich, dagegen ist eine Schleife mit "hide" eher trivial. Schicke mir bitte die gesamte Weltkarte, falls die Datei größer als das Limit von 300 kB sein sollte, über ein anderes Forum.
mfg
Anzeige
AW: Weltkarte
24.03.2020 13:42:50
stef26
Hallo Fennek,
ich bräuchte eigentlich nur noch die Funktion wie ich alle bis auf das aktuelle Shape in der Schleife ausblende und Später wieder einblenden kann. Dann müsste man nur das Speichern immer von den Shape auf Tabelle Bild ändern, oder?
Ich hoffe der Link auf mein OneDrive geht...(mache das zum ersten mal)
https://1drv.ms/x/s!Aop3SUyVIaT_unagJb_0xK02nFdy?e=5jRghv
:-)
Stefan
AW: Versuch
24.03.2020 16:10:15
Fennek
Hallo,
bis auf 2 Fehler in der Karte habe ich eine recht einfache Lösung:
im unteren Teil des Debug-Fenster eingeben
- zuerst ein Sheet vom Type Chart anlegen: Charts.Add
- im Sheets("Erde"): activesheet.shapes.selectall
- copy
- im Sheets("Charts"): paste
- dann vergrössern: activesheet.shapes.selectall und von Hand größer ziehen
Dann kann man in diesem Diagramm-Sheet direkt auswählen und als jpg exportieren:

Sub Ausblenden()
Dim WS As Worksheet: Set WS = ActiveSheet 'im Blatt Chart
i = 1
With WS
expo = "c:\users\office\desktop\"
Debug.Print .Shapes(i).Name, .Shapes(1).Fill.ForeColor
'.Shapes(1).Visible = msoTrue 'msoFalse NICHT VERWENDEN
.Shapes(i).Fill.Visible = msoTrue 'msoFalse
.Shapes(i).Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Export expo & .Shapes(i).Name & ".jpg", "jpg"
End With
End Sub
Der Werte von "i" ist die Auswahl der Länder, die markiert sind. Es ist besser die Rahmen sichtbar zu lassen. Auch eine Schleife über alle 258 ist möglich.
Die Datei ist mit über 1 MB zu groß für dieses Forum, für andere eine Zumutung.
Versuche mal die Auswahl nach deinen Wünschen zu gestalten. Falls es Probleme geben sollte, lade ich die Datei in einem anderen Forum hoch.
mfg
Anzeige
AW: Weltkarte
24.03.2020 16:46:59
Rolf
Hallo Stefan
ich hab mir auch mal was überlegt:
die Sub_Ein_Ausblenden erledigt das Anzeigen der einzelnen Länder und ruft dann
die Sub_Bild_Exportieren zum Speichern eines Zellbereichs auf.
Den Zellbereich musst Du im Code entsprechend deiner gesamten Weltkarte anpassen.
Gruß Rolf
Sub Ein_Ausblenden()
Dim shp As Shape
Dim i As Integer
Dim StrName As String
With Worksheets("Erde")
For Each shp In .Shapes
shp.Visible = False
Next
End With
For i = 1 To Worksheets("Erde").Shapes.Count
StrName = Worksheets("Erde").Shapes(i).Name
With ActiveSheet
.Shapes(i).Visible = True
If i > 1 Then .Shapes(i - 1).Visible = False
End With
Call Bild_exportieren(StrName)
Next
With Worksheets("Erde")
For Each shp In .Shapes
shp.Visible = True
Next
End With
End Sub

Sub Bild_exportieren(BildName)
Dim Zellbereich As Range
Dim Bild As Picture
Dim Diagramm As ChartObject
Set Zellbereich = Range("A1:M30")  'anpassen auf Größe der Weltkarte!!
Application.ScreenUpdating = False
Zellbereich.Copy
Worksheets.Add
Set Bild = ActiveSheet.Pictures.Paste(Link:=True)
Bild.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With ActiveSheet.ChartObjects.Add(0, 0, Bild.Width, Bild.Height).Chart
.ChartArea.Select
.Paste
'Pfad anpassen!!
.Export Filename:=ActiveWorkbook.Path & "\Bilder\" & BildName & ".jpg", FilterName:="jpg"
.Parent.Delete
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.ScreenUpdating = True
Set Diagramm = Nothing
Set Bild = Nothing
Set Zellbereich = Nothing
End Sub

Anzeige
AW: Weltkarte
24.03.2020 16:54:49
Rolf
Hallo nochmal
im Speicherpfad steht gibt es einen Unterordner 'Bilder'
den hatte ich mit zum Probieren angelegt.
Entweder den Ordner in deinem aktuellen Speicherort anlegen, oder aus dem Code rausschmeißen, sonst gibt's einen Fehler -Pfad nicht gefunden- !
Gruß Rolf
DANKE
24.03.2020 17:41:38
stef26
Danke an alle Beteiligten.
Wunderbar,
Danke für eure Hilfe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige