2017-03-21 4 views
1

Ich schrieb ein Makro, um eine PDF in einen PowerPoint mit der Funktion AddOLEObject einzufügen. Es funktioniert wie vorgesehen, außer es gibt einen großen Qualitätsverlust des Bildes. Das PDF ist eine einzelne 8.5x11-Seite mit einigen wenigen Diagrammen, die mit Hilfe der Durchflusszytometrie-Software erstellt wurden (falls jemand damit vertraut ist). Beim Einfügen fehlen einige Achsen und Ticker sowie Fragmente von Buchstaben und Zahlen. Dies ist offensichtlich unerwünscht.VBA Paste PDF in PowerPoint schreckliche Qualität

Hier ist der relevante Teil meines Code:

Set FlowScript2 = Application.FileDialog(msoFileDialogFilePicker) 
With FlowScript2 
    .AllowMultiSelect = False 
    .Filters.Clear 
    .Filters.Add "PDFs", "*.pdf" 
    .Title = "Select Lentivirus Transduction Flow Results File" 
    .Show 
End With 

If FlowScript2.SelectedItems.Count <> 0 Then 

    FlowFile =Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1) 

    Set shp = sld.Shapes.AddOLEObject(Left:=50.4, Top:=110, Width:=792, Height:=612, FileName:=FlowFile, Link:=False) 
    shp.Line.Visible = msoTrue 

    With shp.PictureFormat 
     .CropLeft = 45 
     .CropRight = 45 
     .CropTop = 52 
     .CropBottom = 210 
    End With 

End If 

Ich habe versucht, das Bild in verschiedenen Größen einzufügen, die nicht funktioniert hat. Ich habe irgendwo gelesen, dass es besser ist, Adobe-Objekte zu verwenden, aber ich versuche, das Endergebnis an andere Benutzer zu verteilen, und bin besorgt, dass die Version möglicherweise nicht allgegenwärtig ist. Bei einem Verlust von was zu tun ist. Jede Hilfe wird sehr geschätzt. Vielen Dank!

Antwort

0

Sie können das Dokument mit einem Symbol einfügen und dann ein ActiveX-Bild vor dem Symbol platzieren und dann ein eigenes optimiertes Bild für das Bild erstellen und an die ActiveX-Bildeigenschaft anhängen.

Und schließlich einige Code zum Click-Ereignis des ActiveX-Steuerelement anhängen:

Private Sub Image1_Click() 
    Dim shp As Shape 
    Set shp = Slide1.Shapes("Object 1") 
    shp.OLEFormat.DoVerb 0 
End Sub 
+0

Hallo @ThunderFrame, vielen Dank für Ihren Beitrag. Das ist ein großartiger Vorschlag, aber ich möchte vermeiden, dass ich separate Bilder erzeugen muss, da ich nicht glaube, dass Nutzer dazu bereit wären. Gibt es noch andere Methoden zum Umgang mit PDFs? – dimsharksas

+0

Ich glaube nicht, VBA können Sie die Qualität bestimmen, und die Skalierung ist eindeutig problematisch. Die andere (hässlichere) Alternative besteht darin, die PDF-Datei als Symbol hinzuzufügen und dann den Hintergrund der Form festzulegen - das Symbol ist jedoch immer noch vor der Form sichtbar. Ich weiß nicht, wie viel Zeit/Energie Sie haben, aber Sie könnten in die Automatisierung der Erstellung von PDF-Thumbnails schauen und dann diese mit der in meiner Hauptantwort erwähnten Vorgehensweise verwenden. – ThunderFrame