Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Powerpoint Versionen in VBA Late Binding

Powerpoint Versionen in VBA Late Binding
23.06.2017 12:01:57
Nati
Hallo zusammen,
in einer Datei kann eine Powerpoint Präsentation erstellt werden.
Dies funktionier auf den verschiedenen Excel Versionen. Soweit so gut, speichert nun ein Nutzer die Datei bei Excel Version 16 und ein anderer öffnet die Datei von Excel 14 gibt es ein Fehler, andersrum nicht.
Bei extras dann Verweise haut es die Powerpoint 14 Library dann raus.
Kann mir jemand helfen: Falls Version 14 oder am besten, egal welche Version von Excel, soll die passende Library hinzufügen.
Ein Lösungsvorschlag wäre dazu "Late Binding". In der angehängten Datei ist,so der Anschein,Late Binding genutzt, trotzdem kommt der Fehler.
https://www.herber.de/bbs/user/114428.xlsm
Über Rat freue ich mich sehr!
Liebe Grüße,
Nathalie

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Powerpoint Versionen in VBA Late Binding
23.06.2017 12:18:27
Nepumuk
Hallo Nathalie,
teste mal:
Option Explicit

Sub CreatePowerPoint()
    
    Dim oPPTApp As Object 'Die PowerPoint Anwendung
    Dim oPPTFile As Object 'Die PowerPoint Datei
    Dim oPPTSlide As Object 'PowerPoint Folien
    Dim referenzVersion14 As String
    Dim referenzVersion16 As String
    Dim deltaTop As Integer
    Dim deltaLeft As Integer
    Dim oPPTSlide1 As Object
    Dim oPPTSlide2 As Object
    Dim oPPTSlide3 As Object
    Dim oPPTSlide4 As Object
    Dim oPPTSlide5 As Object
    
    'Erkenne Komputermodell Lenovo
    
    Dim manufacturer As String
    Const fujitsu As String = "FUJITSU"
    Const lenovo As String = "LENOVO"
    
    Dim lenov As String
    Dim fujit As String
    
    Dim deltaTopLenovo As Integer
    Dim deltaLeftLenovo As Integer
    Dim objWMIService As Object
    Dim colBIOS As Object, objBios As Object
    
    'PowerPoint öffnen/starten
    Set oPPTApp = CreateObject("Powerpoint.Application")
    oPPTApp.Visible = True
    
    'Neue Präsentation
    
    Set oPPTFile = oPPTApp.Presentations.Add
    
    ' 'Button ausblenden
    ' Workbooks(fileName).Sheets("Purchasing").OLEObjects.Visible = False
    
    'neue Folien einfügen
    'Index: Foliennummer, Layout 12: Leeres Layout
    Set oPPTSlide1 = oPPTFile.Slides.Add(Index:=1, Layout:=12)
    Set oPPTSlide2 = oPPTFile.Slides.Add(Index:=2, Layout:=12)
    Set oPPTSlide3 = oPPTFile.Slides.Add(Index:=3, Layout:=12)
    Set oPPTSlide4 = oPPTFile.Slides.Add(Index:=4, Layout:=12)
    Set oPPTSlide5 = oPPTFile.Slides.Add(Index:=5, Layout:=12)
    ' Set oPPTSlide6 = oPPTFile.Slides.Add(Index:=6, Layout:=12)
    ' Set oPPTSlide7 = oPPTFile.Slides.Add(Index:=7, Layout:=12)
    
    'Anzeige auf 16:9 umstellen
    oPPTApp.ActivePresentation.PageSetup.SlideSize = 15
    
    'Gleicht die Office Versionen ab
    
    referenzVersion14 = "14.0"
    referenzVersion16 = "16.0"
    
    'Stellt Delta zwischen Office 2010 und 2016 ein. Hier kann justiert werden
    
    If Application.Version = referenzVersion16 Then
        deltaLeft = deltaLeft - 140
        deltaTop = deltaTop - 50
    End If
    Debug.Print (deltaLeft)
    
    'Stellt Delta von Lenovo ein. Hier kann justiert werden
    
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set colBIOS = objWMIService.ExecQuery("Select * from Win32_BIOS")
    For Each objBios In colBIOS
        Debug.Print (objBios.manufacturer)
        manufacturer = objBios.manufacturer
        
        If InStr(manufacturer, lenovo) > 0 Then
            deltaLeftLenovo = deltaLeftLenovo + 14
            deltaTopLenovo = deltaTopLenovo + 6
            
        End If
    Next
    
    'Kopiere Bereich A1:N35 aus Tabellenblatt SIF und füge es in Folie 1 ein
    Sheets("SIF").Range("A1:N35").CopyPicture
    oPPTSlide1.Shapes.Paste
    With oPPTSlide1.Shapes(1)
        .IncrementLeft 400 + deltaLeft + deltaLeftLenovo
        .IncrementTop 198 + deltaTop + deltaTopLenovo
        .Width = 721
    End With
    
    'Kopiere Bereich A1:N34 aus Tabellenblatt Purchasing und füge es in Folie 2 ein
    Sheets("Purchasing").Range("A1:R34").CopyPicture
    oPPTSlide2.Shapes.Paste
    With oPPTSlide2.Shapes(1)
        .IncrementLeft 400 + deltaLeft + deltaLeftLenovo
        .IncrementTop 198 + deltaTop + deltaTopLenovo
        .Width = 721
    End With
    
    'Kopiere Bereich A1:N34 aus Tabellenblatt Quality und füge es in Folie 3 ein
    Sheets("Quality").Range("A1:N34").CopyPicture
    oPPTSlide3.Shapes.Paste
    With oPPTSlide3.Shapes(1)
        .IncrementLeft 400 + deltaLeft + deltaLeftLenovo
        .IncrementTop 198 + deltaTop + deltaTopLenovo
        .Width = 721
    End With
    
    'Kopiere Bereich A1:N34 aus Tabellenblatt Logistics und füge es in Folie 4 ein
    Sheets("Logistics").Range("A1:N34").CopyPicture
    oPPTSlide4.Shapes.Paste
    With oPPTSlide4.Shapes(1)
        .IncrementLeft 400 + deltaLeft + deltaLeftLenovo
        .IncrementTop 198 + deltaTop + deltaTopLenovo
        .Width = 721
    End With
    
    'Kopiere Bereich A1:L29 aus Tabellenblatt Greetings und füge es in Folie 4 ein
    Sheets("Greetings").Range("A1:L29").CopyPicture
    oPPTSlide5.Shapes.Paste
    With oPPTSlide5.Shapes(1)
        .IncrementLeft 400 + deltaLeft + deltaLeftLenovo
        .IncrementTop 198 + deltaTop + deltaTopLenovo
        .Width = 721
    End With
    
    'Variablen leeren
    Set oPPTSlide1 = Nothing
    Set oPPTSlide2 = Nothing
    Set oPPTSlide3 = Nothing
    Set oPPTSlide4 = Nothing
    Set oPPTSlide5 = Nothing
    Set oPPTFile = Nothing
    Set oPPTApp = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Powerpoint Versionen in VBA Late Binding
26.06.2017 07:00:26
Nati
Hallo Nepumuk,
danke für deine schnelle Hilfe.
leider erscheint der Fehler noch. :(
Ein Kollege hat das Excel Sheet verwendet(2016) und dann mir wieder zu geschickt(2014) zum Testen deiner Version. Es hat die Microsoft Powerpoint Library von 2014 wieder rausgehauen. (siehe Bild)
Userbild
Der Fehler der erscheint:
Userbild
Man müsste vielleicht auf die aktuelle Excel Version prüfen.
Wenn (If) Excel Version 2014 bzw. überprüfe welche Excel Version, dann (than) installiere die zugehörige Powerpoint Library.
Leider weiß ich nicht wie das syntaktisch umzusetzen ist.
Liebe Grüße,
Nati
Anzeige
AW: Powerpoint Versionen in VBA Late Binding
26.06.2017 10:55:47
Nepumuk
Hallo Nathalie,
mein Code funktioniert ohne Verweis. Ich hab das getestet.
Gruß
Nepumuk
AW: Powerpoint Versionen in VBA Late Binding
26.06.2017 12:54:28
Nati
WOW Nepumuk!!!
Du weißt nicht wie dankbar ich dir bin!
Hast auf jeden Fall heute jemanden glücklich gemacht. :)
Liebe Grüße,
Nati
Ps. War mein Fehler, hab es versehentlich in ein anderes Modul kopiert.
AW: Powerpoint Versionen in VBA Late Binding
26.06.2017 13:04:54
Nati
Ich habe gesehen, dass du:
Dim objWMIService As Object
Dim colBIOS As Object, objBios As Object
deklariert hast und als Slidesize 15 hart codiert hast. Lag daran der Fehler?
Liebe Grüße,
Nati
AW: Powerpoint Versionen in VBA Late Binding
26.06.2017 13:15:46
Nepumuk
Hallo Nathalie,
richtig, das war das einzige was ich anpassen musste.
LG
Nepumuk
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige