Microsoft Excel

Herbers Excel/VBA-Archiv

Makro aus Excel 2003 geht in Excel 2007 nicht - Bi | Herbers Excel-Forum


Betrifft: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Joe
Geschrieben am: 02.12.2009 21:12:09

Hallo zusammen,

hab folgendes Mkro:

-----------------------------------------------

Sub Bilder_einfügen() 
Dim Pfad As String, Wiederholungen As Long 
On Error Resume Next 
Pfad = "I:\Allgemein\Organisationshandbuch\6 Marketing\Bilddatenbank\" 
For Wiederholungen = 2 To Range("A65536").End(xlUp).Row 
Cells(Wiederholungen, 2).Activate 
ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg").Select 
Selection.ShapeRange.LockAspectRatio = msoTrue 
Selection.ShapeRange.Height = 90 
Selection.ShapeRange.IncrementLeft 0.75 
Selection.ShapeRange.IncrementLeft 0.75 
Selection.ShapeRange.IncrementTop 1.75 


Next 
End 
Sub 
---------------------------------------- 

Problem: 
Makro lief in Excel 2003 bestens - jedes Zeile hatte ihr entsprechendes Bild 
In Excel 2007 werden alle Bilder übereinander gestapelt (in Zeile 4 = 1. Zeile der Unterlage)  _
und nicht in die entsprechenden Zeilen eingefügt. 

Bitte um Lösungsvorschläge und sag schon jetzt --> Besten Dank 

Joe 


  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Josef Ehrensberger
Geschrieben am: 02.12.2009 21:45:59

Hallo Joe,

ungetestet!

Sub Bilder_einfügen()
  Dim Pfad As String, Wiederholungen As Long
  Dim objShp As Object
  
  Pfad = "I:\Allgemein\Organisationshandbuch\6 Marketing\Bilddatenbank\"
  
  For Wiederholungen = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Dir(Pfad & Cells(Wiederholungen, 1) & ".jpg", vbNormal) <> "" Then
      Set objShp = ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg")
      With objShp
        .Top = Cells(Wiederholungen, 2).Top
        .Left = Cells(Wiederholungen, 2).Left
        .LockAspectRatio = msoTrue
        .Height = 90
        .IncrementLeft 0.75
        .IncrementLeft 0.75
        .IncrementTop 1.75
      End With
    End If
  Next
  
  Set objShp = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Joe
Geschrieben am: 02.12.2009 22:20:44

Hallo Sepp,

danke für die schnelle Antwort.

Leider erscheint folgende Fehlermeldung:

"Objekt unterstützt diese Eigenschaft oder Methode nicht"

Haben Sie einen Lösungsvorschlag?

Danke

Joe


  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Josef Ehrensberger
Geschrieben am: 03.12.2009 15:54:38

Hallo Joe,

so geht's.

Sub Bilder_einfügen()
  Dim Pfad As String, Wiederholungen As Long
  Dim objShp As Object
  
  Pfad = "I:\Allgemein\Organisationshandbuch\6 Marketing\Bilddatenbank\"
  
  For Wiederholungen = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Dir(Pfad & Cells(Wiederholungen, 1) & ".jpg", vbNormal) <> "" Then
      Set objShp = ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg")
      With objShp
        .Top = Cells(Wiederholungen, 2).Top
        .Left = Cells(Wiederholungen, 2).Left
        .ShapeRange.LockAspectRatio = msoTrue
        .Height = 90
        .ShapeRange.IncrementLeft 0.75
        .ShapeRange.IncrementLeft 0.75
        .ShapeRange.IncrementTop 1.75
      End With
    End If
  Next
  
  Set objShp = Nothing
End Sub




Gruß Sepp



  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Joe
Geschrieben am: 03.12.2009 18:02:48

Hallo Sepp,

ganz herzlichen Dank für die Antwort.
Jetzt klappt das wunderbar - Sie sind eine große Hilfe!!!!!!

Jetzt gibt es noch 1 Problem.
Einige Bilder ragen rechts zuweit über die Spalte hinaus.
Für mich ist nicht erkennbar, was der Auslöser hierfür ist.
Es ist für mich nur verwunderlich, daß Bilder im gleichen
Format und in gleicher Auflösung unterschiedliche Breiten
haben.
Wichtig für das SOLL ist, daß
a.) die Spaltenbreite
bzw.
b.) die Zeilenhöhe
berücksichtigt wird und sich die Bildgröße poportional an diese
2 Kriterien orientiert und zwar so, daß entweder die Spaltenbreite
voll genutzt wird bzw. die volle Zeilenhöhe - je nach dem was für
das Bild besser ist.

Wenn Sie hier auch noch eine Lösung haben, dann sind Sie für mich
der absolute Crack!!!!

Schon jetzt mein herzlichster Dank

Joe


  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Josef Ehrensberger
Geschrieben am: 03.12.2009 19:26:02

Hallo Joe,

hier im Forum wird im Allgemeinen das "Du" gebraucht.

So sollte es klappen.

Sub Bilder_einfügen()
  Dim Pfad As String, Wiederholungen As Long
  Dim objShp As Object
  
  Pfad = "I:\Allgemein\Organisationshandbuch\6 Marketing\Bilddatenbank\"
  
  For Wiederholungen = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Dir(Pfad & Cells(Wiederholungen, 1) & ".jpg", vbNormal) <> "" Then
      Set objShp = ActiveSheet.Pictures.Insert(Pfad & Cells(Wiederholungen, 1) & ".jpg")
      With objShp.ShapeRange
        .LockAspectRatio = msoTrue
        .Top = Cells(Wiederholungen, 2).Top + 1
        .Left = Cells(Wiederholungen, 2).Left + 1
        .Height = Cells(Wiederholungen, 2).Height - 1
        If .Width > Cells(Wiederholungen, 2).Width - 1 Then .Width = Cells(Wiederholungen, 2).Width - 1
      End With
    End If
  Next
End Sub




Gruß Sepp



  

Betrifft: AW: Makro aus Excel 2003 geht in Excel 2007 nicht - Bi von: Joe
Geschrieben am: 04.12.2009 08:49:38

Hallo Sepp,

o.k. - das mit dem DU wußte ich nicht, hab einfach nach meiner Erziehung
verfahren ;-)

Also du wirs jetzt von mir geadelt!!!
A: Lösungen schnell
B: Lösungen exact
C: Lösungen voll funktional
daraus resultierend - ein glücklicher Joe


Vielen Dank und eine schöne Weihnachtszeit sowie einen
guten Rutsch in ein erneutes Exceljahr.

Alles Gute für Dich
Joe