VBA EXCEL 2010 Bilder über Makro integrieren

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    VBA EXCEL 2010 Bilder über Makro integrieren

    Hallo Zusammen,

    bin jetzt schon ein paar Tage an diesem ***** Problem dran.
    Möchte gerne Bilder einfügen, deren (Datei)Namen in den markierten Zellen stehen und entsprechend die Zeile vergrößern.
    Meine aktuelle Lösung fügt leider nur die "Verknüpfung" ein:

    Visual Basic-Quellcode

    1. Sub AddImage(vAlign As String, adjustcell As Boolean) Dim objSelectedRange As Range Dim objCell As Range Dim ImagePath As String Dim ImageFolder As String Dim ImageType As String Dim objImg As Object Dim ImgTop As Double Dim ImgLeft As Double Dim ImgWidth As Double Dim ImgHeight As Double Set objSelectedRange = Selection.Cells
    2. ImageFolder = "C:\" ImageType = ".gif" On Error Resume Next
    3. Application.ScreenUpdating = False
    4. For Each objCell In objSelectedRange If objCell.Value <> "" Then ImagePath = ImageFolder & objCell.Value & ImageType 'Set objImg = ActiveSheet.Shapes.AddPicture(ImagePath, True, True, objCell.Top, objCell.Height * 3, 30, 60) Set objImg = ActiveSheet.Pictures.Insert(ImagePath) If Err.Number = 0 Then Application.StatusBar = "Adding image ... " & objCell.Value If objImg.ShapeRange.Height > 60 Then ImgHeight = 60 Else ImgHeight = objImg.ShapeRange.Height End If objImg.ShapeRange.Width = ImgWidth objImg.ShapeRange.Height = ImgHeight 'Resize Cell If adjustcell Then objCell.RowHeight = objImg.ShapeRange.Height + 18 If objCell.ColumnWidth < (objImg.ShapeRange.Width / 5) Then objCell.ColumnWidth = objImg.ShapeRange.Width / 5 End If End If If vAlign = "Top" Then objCell.VerticalAlignment = xlVAlignTop objImg.Top = objCell.Top + 15 objImg.Left = objCell.Left + 5 Else If vAlign = "Bottom" Then objCell.VerticalAlignment = xlVAlignBottom objImg.Top = objCell.Top + 5 objImg.Left = objCell.Left + 5 End If End If objImg.Placement = xlMoveAndSize
    5. Set objImg = Nothing Else Err.Clear End If End If
    6. Next objCell Application.ScreenUpdating = True Application.StatusBar = False
    7. End Sub


    Vielen Dank für eure Hilfe.

    Visual Basic-Quellcode

    1. Sub test()
    2. Dim myCell As Range
    3. Dim myRange As Range
    4. Dim dblHeight As Double
    5. 'Erwartung:
    6. 'Markierung sind Zellen mit Pfadangabe
    7. Set myRange = Selection
    8. For Each myCell In myRange.Cells
    9. myCell.Offset(0, 1).Select 'Bildposition vorselektieren
    10. ActiveSheet.Pictures.Insert CStr(myCell.Value) 'Bild einfügen
    11. ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Select 'Fokus
    12. dblHeight = CDbl(Selection.ShapeRange.Height) 'Höhe merken
    13. myCell.Select '
    14. myCell.EntireRow.RowHeight = IIf(dblHeight > 409, 409, dblHeight)
    15. Next
    16. Set myRange = Nothing
    17. End Sub

    Visual Basic-Quellcode

    1. ActiveSheet.Pictures.Insert

    Wenn die Bild-Datei während des Insert-Vorgangs vorhanden ist, dann wird sie auch eingebettet.
    Du kannst die Datei danach löschen und die Grafik ist immer noch im Worksheet drin.

    Wenn du den Insert-Code natürlich auf einem Rechner ausführst, der die Datei nicht vorhält, wird das nichts.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo,

    ich habe momentan das gleiche Problem mit Bildern.

    Habe jetzt mal folgenden Test gemacht:

    1) Einen Ordener "Bilder" mit einem Bild "Test.bmp" erstellt.
    2) Das Bitmap manuell in Excel eingefügt und dabei eine Makroaufzeichnung laufen lassen.
    3) Die Exceldatei als Mappe1.xlsx gespeichert.
    4) eine Neue Excelmappe geöffnet und das Bitmap mit dem aufgezeichneten Makro (ActiveSheet.Pictures.Insert("C:\Bilder\Test.bmp) eingefügt.
    5) Die Exceldatei als Mappe2.xlsx gespeichert.
    6) Den Ordner "Bilder" umbenannt.

    Ergebnis:
    Wenn ich Mappe1.xlsx öffne ist das Bild vorhanden.
    Wenn ich Mappe2.xlsx öffne ist das Bild nicht vorhanden! Stattdessen folgende Fehlermeldung:

    Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben....

    D.h. wenn ich das Bild manuell einfüge wird es in Excel eingebettet. Wenn ich es über das Makro einfüge, wird es lediglich verlinkt.

    Frage:
    Wie kann ich das Bild über Makro einfügen das es eingebettet ist?
    Scheint ein Feature (Bug?) von Office 2010 zu sein.
    In 2007 gab es damit keine Probleme.
    Verwende Sheet.Shapes.AddPicture
    Dort kannst du mit LinkToFile:=False angeben, dass es direkt eingebettet ist.
    Allerdings musst du auch die Bildposition und -Größe angeben.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --