Bild Export Excel - Bild Import PowerPoint

  • Sonstige

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Bild Export Excel - Bild Import PowerPoint

    Hallo Leute, ich arbeite seit neustem mit Makros und stehe jetzt vor einem Problem, welches mir den letzten Nerv raubt. Es geht dabei um PowerPoint und Excel. Folgende Abläufe sollen durch ein Makro ersetzt werden:

    In der Spalte A1 steht eine Nummer, unter diesem Namen soll der Inhalt C1:E20 als Bild (Format momentan GIF, prinzipiell egal) abgespeichert werden, und zwar auf dem Pfad C:\
    Momentan schaut mein Code so aus:

    Quellcode

    1. Sub Range_To_Image()
    2. Dim objPict As Object, objChrt As Chart
    3. Dim rngImage As Range, strFile As String
    4. On Error GoTo ErrExit
    5. With Sheets("Tabelle1") 'Tabellenname - Anpassen!
    6. Set rngImage = .Range("C3:F18")
    7. rngImage.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
    8. .PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
    9. Set objPict = .Shapes(.Shapes.Count)
    10. strFile = "C:\1.gif" 'Pfad und Dateiname für das Bild
    11. objPict.Copy
    12. Set objChrt = .ChartObjects.Add(1, 1, objPict.Width + 8, objPict.Height + 8).Chart
    13. objChrt.Paste
    14. objChrt.Export strFile
    15. objChrt.Parent.Delete
    16. objPict.Delete
    17. End With
    18. ErrExit:
    19. Set objPict = Nothing
    20. Set objChrt = Nothing
    21. Set rngImage = Nothing
    22. End Sub



    Nun soll in PowerPoint ein Makro möglich sein, welches mich nach dem Start in einen Dateiöffnungsdialog führt, aus dem ich dann eines der vorher erstellten Bilder auswählen kann, dieses soll dann in PowerPoint eingeladen werden auf die aktuell angewählte Folie und dort in die bestimmte Größe gebracht, horizontal zentrisch und mit dem definierten Abstand nach oben.
    Momentan habe ich dazu 3 Makros die allerdings nicht ganz so funktionieren wie ich das gerne hätte.
    Die Größe und Position ändere ich nach selektion des Bildes sobald es auf der Folie ist mit:

    Quellcode

    1. Sub SizeAndPosition()
    2. ' Usage: Select two shapes. The size and position of
    3. ' the first shape selected will be copied to the second.
    4. Dim w As Double
    5. Dim h As Double
    6. Dim l As Double
    7. Dim t As Double
    8. With ActiveWindow.Selection.ShapeRange(1)
    9. .Width = 714.0472440945
    10. .Height = 466.2992125984
    11. End With
    12. With ActivePresentation.PageSetup
    13. x = .SlideWidth / 2
    14. End With
    15. For Each osld In ActivePresentation.Slides
    16. For Each oshp In osld.Shapes
    17. If oshp.Type = msoPicture Then
    18. oshp.Left = x - (oshp.Width / 2)
    19. oshp.Top = 0.25
    20. End If
    21. Next
    22. Next
    23. End Sub


    Der Dateiöffnungsdialog ist leider auch fehlerhaft, denn nach Import wird die Datei nicht auf die Folie gebracht geschweige denn angewählt:

    Quellcode

    1. Sub Open()
    2. Dim dlgOpen As FileDialog
    3. Dim strDatei As String
    4. Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
    5. With dlgOpen
    6. 'nur eine auswählbar True = mehrere Dateien auswählbar
    7. .AllowMultiSelect = False
    8. .Show
    9. On Error Resume Next
    10. strDatei = .SelectedItems(1)
    11. If Err <> 0 Then
    12. MsgBox "Es wurde keine Datei ausgewählt", _
    13. vbInformation + vbOKOnly, "Titel"
    14. Else
    15. MsgBox "Ausgewählte Datei: " & strDatei, _
    16. vbInformation + vbOKOnly, "Titel"
    17. End If
    18. On Error GoTo 0
    19. End With
    20. End Sub



    Wenn mir da jemand eine Hilfestellung zu geben könnte wäre das richtig Spitze ! J
    Hallo Ralf,

    fangen wir mal klein an:

    1. Speichern des Bildes
    In Zeile 17 solltest du dies machen. Damit liest Du den Text aus der Zelle A1 aus.

    Visual Basic-Quellcode

    1. strFile = "C:\" & .Cells(1,1).Value & ".gif" 'Pfad und Dateiname für das Bild


    2. Anpassen der Bildgröße und -poistion für das aktuell ausgewählte Bild

    Visual Basic-Quellcode

    1. Sub SizeAndPosition()
    2. Dim shp As Shape
    3. Dim dblMitte As Double
    4. dblMitte = ActivePresentation.PageSetup.SlideWidth / 2
    5. Set shp = ActiveWindow.Selection.ShapeRange(1)
    6. With shp
    7. .Width = 714.0472440945
    8. .Height = 466.2992125984
    9. .Left = dblMitte - (.Width / 2)
    10. .Top = 0.25
    11. End With
    12. End Sub


    3. Dateiöffnungsdialog
    Das Ergebnis des Öffnen-Dialoges findet sich in der Variable strFile. Hier sthet die Pfadangabe zur Daeti drin. Mit dieser musst Du dann noch was machen.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).