2016-07-20 3 views
0

habe ich den folgenden Code Excel-Screenshot zu exportierenWarum erscheint eine weiße Schrift, wenn ich den Excel-Screenshot in VBA exportiere?

Sub ExcelRangeToPowerPoint() 
'PURPOSE: Copy/Paste An Excel Range Into a New PowerPoint Presentation 
'SOURCE: www.TheSpreadsheetGuru.com 

Dim rng As Range 
Dim PowerPointApp As Object 
Dim myPresentation As Object 
Dim mySlide As Object 
Dim myShape As Object 

'Copy Range from Excel 
    Set rng = Worksheets("Overall").Range("B2:AH47") 

'Create an Instance of PowerPoint 
    On Error Resume Next 

    'Is PowerPoint already opened? 
     Set PowerPointApp = GetObject(class:="PowerPoint.Application") 

    'Clear the error between errors 
     Err.Clear 

    'If PowerPoint is not already open then open PowerPoint 
     If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application") 

    'Handle if the PowerPoint Application is not found 
     If Err.Number = 429 Then 
     MsgBox "PowerPoint could not be found, aborting." 
     Exit Sub 
     End If 

    On Error GoTo 0 

'Optimize Code 
    Application.ScreenUpdating = False 

'Create a New Presentation 
    Set myPresentation = PowerPointApp.Presentations.Add 

'Add a slide to the Presentation 
    Set mySlide = myPresentation.Slides.Add(1, 11) '11 = ppLayoutTitleOnly 

'Copy Excel Range 
    rng.Copy 

'Paste to PowerPoint and position 
    mySlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 
    Set myShape = mySlide.Shapes(mySlide.Shapes.Count) 

    'Set position: 
     myShape.Left = 35 
     myShape.Top = 15 

    'setting size 
     myShape.Height = 510 


'Make PowerPoint Visible and Active 
    PowerPointApp.Visible = True 
    PowerPointApp.Activate 

'Clear The Clipboard 
    Application.CutCopyMode = False 

End Sub 

zu Powerpoint und einen Screenshot ppt wirft, die wie folgt aussieht: die All

die roten Kästchen zeigen Text war in weißer Farbe. Sie werden ausgeblendet, wenn sie in Excel angezeigt werden. Sie werden jedoch nur angezeigt, wenn die Auswahl Bildschirm erfasst und in PPT exportiert wird.

Bitte helfen Sie!

+0

Hey Dirk, keiner von ihnen funktioniert. –

+0

Es macht mir nichts aus, solange das Bild an ppt gesendet wird. Was muss ich für die Bitmap ändern? –

Antwort

0

Das Problem bezieht sich auf das Rendern von Text in Metadateien auf einem transparenten Hintergrund. Sie können dieses Problem auf zwei Arten beheben:

  • Kopieren Sie den Excel-Bereich als Bitmap mit rng.CopyPicture xlScreen, xlBitmap. Da das Bitmap-Format Transparenz nicht unterstützt, wird der Zellenhintergrund automatisch weiß dargestellt. Der Nachteil dieser Option ist, dass der kopierte Bereich nicht mehr gut skaliert werden kann, da er nicht mehr in einem Vektorformat vorliegt.
  • Entfernen Sie die Transparenz explizit aus den Zellen, indem Sie die zu füllende Zelle mit einem weißen Hintergrund festlegen. Kopieren Sie dann den Bereich mit rng.CopyPicture xlPrinter, XlPicture. Wenn Sie diese Option verwenden, können Sie weiterhin eine skalierbare Metadatei in PowerPoint verwenden.
+0

Wenn ich 'rng.CopyPicture xlScreen, xlBitmap' verwende, erhalte ich einen Fehler in der folgenden Zeile des Codes' mySlide.Shapes.PasteSpecial DataType: = 2' und der Fehler ist 'Shapes. PasteSpecial: Ungültige Anfrage. Der angegebene Datentyp ist nicht verfügbar. –

+0

@Vinaybilla: Es wird offensichtlich nicht funktionieren, da die Zwischenablage jetzt nur Bitmap-Format enthält und Sie versuchen, eine erweiterte Metadatei einzufügen, die gerade nicht vorhanden ist. Wenn die Zwischenablage nur eine Bitmap enthält, müssen Sie stattdessen 'Shapes.PasteSpecial ppPasteBitmap' verwenden (oder benutzen Sie einfach die normale' Shapes.Paste' Methode) –

Verwandte Themen