Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

Screenshots aus Datei auslagern?

Screenshots aus Datei auslagern?
nicki
Hallo zusammen,
habe eine Datei, die 100 MB umfasst. Grund für den gewaltigen Umfang sind sind ca. 500 Screenshots. Die sind verteilt auf 20 Arbeitsblätter innerhalb dieser einen Datei. Mein Rechner braucht inzwischen Ewigkeiten, um sie überhaupt zu öffen, also muß ich mir was einfallen lassen.
Meine Frage: Gibt es die Möglichkeit diese Screenshots „auszulagern“. Damit meine ich, dass ich sie außerhalb der Datei ablege von wo aus sie bei Aktivierung eines Arbeitsblattes automatisch geladen werden. Und dann natürlich nur die, die auch Bestandteil des aktivierten Arbeitsblattes sind und nicht alle 500.
Aus den 20 Arbeitsblättern 20 Dateien zu machen geht leider nicht.
Schon mal danke für eure Hilfe.
Nicki

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
Einzelne Bilder nur in bestimmten Sheets laden
14.05.2010 16:29:22
NoNet
Hallo Nicki,
Du kannst Die Screenshots zunächst alle "exportieren", indem Du die Mappe per "Datei - Speichern unter... - Dateityp: Webseite (*.html)" speicherst. Es wird dann ein Unterordner mit allen enthaltenen Bildern angelegt - leider werden diese allerdings nur "img00x.jpg" (00x=lfd. Nr.) benannt (JPG oder PNG-Format !).
Du könntest dann per VBA alle Bilder aus der Mappe löschen :
Sub AlleBilderLoeschen()
Dim ws As Worksheet, sh As Shape
For Each ws In Worksheets
For Each sh In ws.Shapes
If sh.Type = msoPicture Then sh.Delete 'Bilder löschen
Next
Next
End Sub
Per Ereignismakro im zentralen Klassenmodul "DieseArbeitsmappe" könntest Du die relevanten Bilder beim Aktivieren eines Blattes laden bzw. bei Deaktivieren eines Blattes auch wieder löschen :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Const strPfad = "C:\Temp\Ordner\mit den\Bildern\" 'Ordnername mit "\" am Ende !
Dim lngB As Long, lngT As Long
Dim arBilder 'Bilder, die in diesem Tabellenblatt geladen werden sollen :
'Hier wird angegeben, welche Bilder in welche Tabelle geladen werden sollen :
Select Case UCase(Sh.Name) 'Name der Tabellenblätter hier im Code in GROSSBUCHSTABEN  _
angeben !
Case "TABELLE1"
arBilder = Array("Image001.png", "Image002.png", "Image006.jpg")
Case "TABELLE2"
arBilder = Array("Image004.jpg", "Image005.png")
Case "TABELLE3"
arBilder = Array("Image003.jpg", "Image007.png", "Image008.jpg")
End Select
For lngB = LBound(arBilder) To UBound(arBilder)
With Sh.Pictures.Insert(strPfad & arBilder(lngB))
lngT = lngT + 10
.Top = lngT
.Left = 10
lngT = lngT + .Height
End With
Next
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Dim objSh As Shape
For Each objSh In Sh.Shapes
If objSh.Type = msoPicture Then objSh.Delete 'Bilder löschen
Next
End Sub
Das hat bei mir zumindest alles einwandfrei funktioniert !
Gruß, NoNet
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige