jpg-Datei in Excel-Zelle verankern

  • #1
J

janB

Bekanntes Mitglied
Themenersteller
Dabei seit
25.02.2005
Beiträge
55
Reaktionspunkte
0
Moin Forum,

ich habe in EXCEl eine Personenliste erstellt und in einer Zelle auch Fotos (jpg) der jeweiligen Personen eingefügt (Einfügen-->Grafik). Die Bilder werden aber scheinbar nur vor das Tabellenraster gelegt und sind nicht wirklich in den Zellen verankert. Das ist ärgerlich, weil beim Sortieren die Bilder nicht mitsortiert werden. Weiß jemand Rat?

Gerne würde ich die Bilder auch nur als Verbindung einfügen, sodass bei einer Aktualisierung eines Bildes in dem Unterordner sich auch das Bild im EXCEL-Blatt ändert...

Freue mich über Tipps
jan
 
  • #2
Hallo janB,

schau mal unter , ob das was für dich ist.

zu: ...nicht wirklich in den Zellen verankert.
Grafik anklicken->rechte Maustaste->Grafik formatieren->Eigenschaften->von Zellposition und -größe abhängig

Gruß Matjes :)
 
  • #3
Hallo Matjes,

danke für die Antwort.
Zur Verankerung von jpgs in einer bestimmten Zelle funktioniert:

zu: ...nicht wirklich in den Zellen verankert.
Grafik anklicken->rechte Maustaste->Grafik formatieren->Eigenschaften->von Zellposition und -größe abhängig


bei mir leider nicht.
Ich arbeite mit Office 2007, dort gibt es unter ->rechte Maustaste->Größeund Eigenschaften... unter dem Reiter Eigenschaften zur Objektpositionierung drei verschiedene Optionen (Von Zellposition und -größe abhängig / Nur von Zellposition abhängig / Von Zellposition und -größe unabhängig). Ich habe alle drei durchprobiert, die Bilder bleiben bei einem Sortierdurchgang trotzdem in ihrer Zelle (z.B. C4) hängen, anstatt sich mit dem Datensatz zu verschieben, zu dem sie gehören...

Dein Makro habe ich auch ausprobiert (das vom 29.05.06).
Abgesehen davon, dass mir nur ein Platzhalter angezeigt wird (Symbol von IrfanView) ist durch den Blatt-Schutz offensichtlich auch kein Sortieren der Daten mehr möglich...?!?

Liegt das an 2007?
Ich hätte nix dagegen die Bilder von Hand einzufügen, nur das Verankern an den Datensatz wäre mir eine echte Hilfe.

Gruß
jan
 
  • #4
Hallo janB,

bzgl. Makro vom 29.05.06:
jo, da verhindert der Blattschutz das sortieren. Nimm einfach den Blattschutz weg und sortiere dann. Die Bilder sollten dann in ihren zugehörigen Zeilen bleiben, wenn die Zeilen im zu sortierenden Bereich enthalten sind.

Blattschutz aufheben unter 2003: Extras-> Schutz-> Blattschutz aufheben...
2007: keine Erfahrung ::)

bzgl.
Ich arbeite mit Office 2007, dort gibt es unter ->rechte Maustaste->Größeund Eigenschaften... unter dem Reiter Eigenschaften zur Objektpositionierung drei verschiedene Optionen (Von Zellposition und -größe abhängig / Nur von Zellposition abhängig / Von Zellposition und -größe unabhängig). Ich habe alle drei durchprobiert, die Bilder bleiben bei einem Sortierdurchgang trotzdem in ihrer Zelle (z.B. C4) hängen, anstatt sich mit dem Datensatz zu verschieben, zu dem sie gehören...

Hier sollte es mit der Option Von Zellposition und -größe abhängig klappen.
Ist das Bild in dieser Zelle auch eingefügt worden ? Eventuell macht das Probleme, wenn es eine andere Zelle war.

Wenn es garnicht klappt, schick mir mal eine Probedatei mit 3 Datensätzen und Bildern.Dann schau ich mal, woran es liegt.

Gruß Matjes :)
 
  • #5
Hallo Matjes,

Hier sollte es mit der Option Von Zellposition und -größe abhängig klappen

wie bereits geschrieben, bei mir (Office2007) klappt das nicht. Ich habe wirklich alle drei Möglichkeiten durchprobiert.

Mir ist noch was aufgefallen. Ich habe die Bilder bisher von Hand als Grafik eingefügt. Dabei hängen (wie gesagt) die Bilder scheinbar vor dem Tabellenraster von Excel (obwohl ich die Zelle vorher markiert hatte). Über dein Makro werden die Bilder scheinbar als Objekte eingefügt. Die sind dann tatsächlich mit der jeweiligen Zelle so verbunden, dass sie mitsortiert werden. Allerdings bekomme ich die Bilder nicht als Bild angezeigt, sondern nur als weißen Kasten mit dem IrfanView-Logo und dem Namen einer jpg-Datei.

Meine Frage an dich: du fügst die jpg-Dateien bei dir als Objekte ein und bekommst sie in Excel angezeigt? Oder doch als Grafik?

Gruß
jan
 
  • #6
Hallo janB,

die Objekte bekomme ich auch nur als Platzhalter angezeigt. Das war zu Zeiten von PhotoEditor (Office 97) anders.

Ich werde am Wochenende noch ein Makro zusammenstellen, der in eine selektierte Zelle eine Grafik einfügt, die dann hoffentlich anstandslos angezeigt wird.

Gruß Matjes :)
 
  • #7
Hallo janB,

dann versuchs mal mit folgendem Makro.

Mit dem sehe ich die .jpgs als Bilder und beim Sortieren der Zeilen werden sie mitsortiert.

Gruß Matjes :)
Code:
Option Explicit
Sub TestJPEGEinfuegen()
 
 Dim Zelle As Range
 Dim sDateinameFull As String
 Dim fileToOpen As Variant
 fileToOpen = Application.GetOpenFilename(jpegs (*.jpg; *.jpeg),*.jpg;*.jpeg)
 If fileToOpen = False Then Exit Sub
 
->nur jpg oder jpeg zulassen
 If Not ( _
  (LCase(Right(fileToOpen, 4)) = .jpg) Or _
  (LCase(Right(fileToOpen, 5)) = .jpeg)) Then
  MsgBox Nur .jpg / .jpeg zulässig.
  GoTo AUFRAEUMEN
 End If
  
 sDateinameFull = fileToOpen
 Set Zelle = ActiveCell
 If Not JPGInZelleEinfuegen(sDateinameFull, Zelle) Then GoTo AUFRAEUMEN

AUFRAEUMEN:
 Set Zelle = Nothing
End Sub


Private Function JPGInZelleEinfuegen(sDateinameFull As String, Zelle As Range) As Boolean
  
  Dim ws As Worksheet, s As Shape, p As Object
  Set ws = Zelle.Parent
  
 ->a) Datei vorhanden ?
  If Dir(sDateinameFull, vbNormal) =  Then
   MsgBox JPGInZelle:Bild nicht vorhanden: & vbLf & sDateinameFull
   GoTo AUFRAEUMEN
  End If
  
 ->c) Arbeitsblatt ?
  If TypeName(ws) <> Worksheet Then
   MsgBox JPGInZelle:Range liegt nicht auf Arbeitsblatt. & vbLf & Typ:  & TypeName(ws)
   GoTo AUFRAEUMEN
  End If
  
 ->c) nur eine Zelle ?
  If Zelle.Count <> 1 Then
   MsgBox JPGInZelle:Als Range nur eine Zelle zulässig: & vbLf & Zelle.Address
   GoTo AUFRAEUMEN
  End If
  
 ->d) in Zelle ist noch kein Bild ?
  For Each s In ws.Shapes
   If s.TopLeftCell.Address = Zelle.Address Then
    MsgBox JPGInZelle:es ist bereits Bild in der Zelle: & vbLf & Zelle.Address
    GoTo AUFRAEUMEN
   End If
  Next
  
 ->e) Bild in Zelle einfügen
  Dim dHeight As Double, dWidth As Double
  dWidth = Zelle.Offset(0, 1).Left - Zelle.Left
  dHeight = Zelle.Offset(1, 0).Top - Zelle.Top
  Set p = ws.Pictures.Insert(sDateinameFull)
  p.Left = Zelle.Left
  p.Top = Zelle.Top
  
 ->f) Bild auf Zellgröße skalieren, aber nicht verzerren
  Dim dScW As Double, dScH As Double, dSc As Double
  dScW = dWidth / p.Width
  dScH = dHeight / p.Height
  If dScW < dScH Then dSc = dScW Else dSc = dScH
  p.Width = p.Width * dSc
  p.Height = p.Height * dSc
  
 ->g) Bildeigenschaften setzen:
  p.Placement = xlMoveAndSize-> von Zell-Position und -Größe abhängig
  p.PrintObject = True   -> drucken
 
 JPGInZelleEinfuegen = True
AUFRAEUMEN:
 Set ws = Nothing: Set s = Nothing: Set p = Nothing
End Function
 
  • #8
Hallo Matjes,

vieeeeelen Dank! Super! Es funktioniert!

Mir ist zwar nicht klar geworden, was dein Makro anderes macht als ich, wenn ich die jpgs von Hand einfüge (die Einstellungen unter Eigenschaften sind identisch), allerdings sind meine VB-Kenntnisse sehr rudimentär und eine funktionierende Black-Box hilft mir natürlich trotzdem sehr weiter!

Danke noch mal
janB
 
  • #9
Hallo janB,

die grundsätzlich Funktion des Makros ist:
- Auswahl einer Grafik-Datei (jpg, jpeg)
- Einfügen der Datei per->Einfügen->Grafik->aus Datei ...
- Größeanpassung an Zelle
- setzen der Grafikeigenschaften
a) von Zell-Position und -Größe abhängig
b) drucken
das entspricht:
Grafik selektieren->
rechte-Maustaste->
Grafik formatieren->
Reiter Eigenschaften
Eigenschaft a) und b) setzen

Das ist die Bedienung unter 2003, müßte aber unter 2007 identisch sein.

Gruß Matjes :)
 
Thema:

jpg-Datei in Excel-Zelle verankern

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben