Microsoft Excel

Herbers Excel/VBA-Archiv

Viele Grafiken mit gleicher Größe einfügen

Betrifft: Viele Grafiken mit gleicher Größe einfügen von: Tom
Geschrieben am: 25.07.2008 11:43:08

Hallo,

ich möchte in ein Tabellenblatt von Zelle A1:z24 verschiedene Grafiken einfügen

- alle auf einmal
- alle gleiche Größe (3 x 3 cm) ** dies ist evtl. auch manuell im Vorfeld möglich, sollte dies zu kmpliziert sein ...

Ich habe im Archiv bisher nur das gefunden - scheint vom Ansatz her richtig zu sein, ist aber nicht genau das was ich brauche. Leider bin ich nur mit dem Rekorder bewandert ... :-(

https://www.herber.de/forum/archiv/348to352/t348331.htm#348398

Kann mir jemand helfen?

Danke vorab.

Gruß
TOM

  

Betrifft: AW: Viele Grafiken mit gleicher Größe einfügen von: ChristianM
Geschrieben am: 25.07.2008 14:17:53

Hallo Tom,
hier ein Ansatz ohne weitere Fehlerabfangung. Die Bilder werden auf die Größe 3x3cm gesetzt.
Gruß Christian

Option Explicit

Sub Bilder()
   Dim vFiles, oPic As Object, sh As Shape
   Dim i&, j&, k&, dWdth#
   
   With Application
      .ScreenUpdating = False
      dWdth = .CentimetersToPoints(3)
      vFiles = .GetOpenFilename("Grafikdateien, *.jpg; *.gif; *.bmp; *.png", , , , True)
   End With
   
   With Sheets("Tabelle1")
      For Each sh In .Shapes
         sh.Delete
      Next
      For i = 1 To UBound(vFiles)
         Set oPic = .Pictures.Insert(vFiles(i))
         With oPic
            .Left = j * dWdth
            .Top = k * dWdth
            .Height = dWdth
            .Width = dWdth
         End With
         j = j + 1
         If j * dWdth > Columns("Z").Left Then k = k + 1: j = 0
         Set oPic = Nothing
      Next
   End With
   Application.ScreenUpdating = True
End Sub




  

Betrifft: AW: Viele Grafiken mit gleicher Größe einfügen von: Tom
Geschrieben am: 25.07.2008 15:35:18

Hallo Christian,

genial! Kannst Du mir noch sagen, wo der Bereich A:Z festgelegt wird?

Danke vielmals

Gruß
TOM


  

Betrifft: AW: Viele Grafiken mit gleicher Größe einfügen von: ChristianM
Geschrieben am: 25.07.2008 17:24:16

Hallo,
mit Columns("Z") legst du die letzte Spalte fest. Spalte A resultiert aus j, denn j ist zu Beginn 0, bzw wird wieder zu 0 gesetzt.
Gruß
Christian


  

Betrifft: AW: Viele Grafiken mit gleicher Größe einfügen von: Tom
Geschrieben am: 25.07.2008 17:50:46

Hallo,

perfekt - letzte Frage:

Wie kann ich noch einen Abstand zwischen die Bilder einbauen (z.B. 1 cm).

Gruß
TOM


  

Betrifft: AW: Viele Grafiken mit gleicher Größe einfügen von: ChristianM
Geschrieben am: 25.07.2008 18:20:13

Hallo,
indem du den Abstand bei oPic.Left und oPic.Top berücksichtigst. Bsp

'...
   With oPic
      .Left = j * dWdth * 4 / 3
      .Top = k * dWdth * 4 / 3
      .Height = dWdth
      .Width = dWdth
   End With
'...


Gruß
Christoph


  

Betrifft: Danke !!!!!! Jetzt ist alles ok! o.T. von: Tom
Geschrieben am: 25.07.2008 18:25:36




  

Betrifft: AW: Danke !!!!!! Jetzt ist alles ok! o.T. von: ChristianM
Geschrieben am: 25.07.2008 18:47:56


nicht ganz... das kommt davon, wenn man mal eben 'nen Kumpel (Christoph) unbeaufsichtigt an seinen Rechner lässt ;-).

prinzipiell hat er recht, ich würde es aber so machen, dann wird die letzte Spalte nicht überschritten.
j und k müssen als Double deklariert werden. (Dim j#, k# statt Dim j&, k&)


   '...
   With oPic
      .Left = j * dWdth
      .Top = k * dWdth
      .Height = dWdth
      .Width = dWdth
   End With
   j = j + 4 / 3
   If j * dWdth > .Columns("F").Left Then k = k + 4 / 3: j = 0
   '...

Gruß
Christian


  

Betrifft: AW: Danke !!!!!! Jetzt ist alles ok! o.T. von: Tom
Geschrieben am: 25.07.2008 18:54:50

Ein Laie wie ich merkt so was nicht :-) :-) :-)

DANKE


  

Betrifft: AW: Danke !!!!!! Jetzt ist alles ok! o.T. von: Äähm...
Geschrieben am: 26.07.2008 11:46:45

Hi,

# ist das Typkennzeichen für Single, nicht Double!


  

Betrifft: Äähm... liegt falsch von: ChristianM
Geschrieben am: 26.07.2008 11:58:41

wer auch immer "Äähm..." ist...

er liegt falsch, denn # ist Double.


  

Betrifft: AW: Äähm... liegt falsch von: Tino
Geschrieben am: 26.07.2008 13:36:21

Hallo,
dass mit der Typkennzeichnung ist korrekt.
Double = #
Single = !

Aber Left, Top, Height und Width erwarten einen Wert vom Typ Single.

Syntax
object.Height [= Single]
object.Width [= Single]
object.Left [= Single]
Objekt.Top [= Single]


Gruß Tino


  

Betrifft: Einverstanden von: ChristianM
Geschrieben am: 26.07.2008 14:28:40

Hallo,
du hast recht.
Double habe ich verwendet, weil bei CentimetersToPoints Centimeter als Double-Wert verlangt ist.
Gruß Christian


 

Beiträge aus den Excel-Beispielen zum Thema "Viele Grafiken mit gleicher Größe einfügen"