Fog Creek Software
Discussion Board

Welcome! and rules

Joel on Software

Error When Copying from Clipboard to PowerPoint sl


I am trying to copy the contents of the output of SQL Reporting Services to
a PowerPoint slide. For this, I am using SQL Reporting Services to obtain an
IMAGE stream, which I paste to the Windows clipboard. Then, using automation,
I am trying to copy this information from the clipboard to a PowerPoint
slide. However, I get an error at slide.Shapes.PasteSpecial.

I am able create a System.Drawing.Bitmap object from the memory stream that
I associate with the image stream. I can also copy an image fragment that I
clipped in MSPaint (which means it's on the clipboard) to PowerPoint using
Automation. And if I generate a CSV stream from Reporting Services, I can
copy this to the clipboard and from there to Excel. It's only that I don't
seem to be able to copy anything from the clipboard to PowerPoint if I pasted
it to the clipboard using the MemoryStream. Also, using the following code, I find that the clipped data from MSPaint supports 4 formats ("Embed Source", "Object Descriptor"    , "MetaFilePict", and "DeviceIndependentBitmap") but the data I copy from the MemoryStream has only 2 ("System.Drawing.Bitmap" and "Bitmap").

// Code to check formats for clipboad data
IDataObject data = Clipboard.GetDataObject();
String[] arrayOfFormats = data.GetFormats(true);

Does anyone have any pointers?



An unhandled exception of type 'System.Runtime.InteropServices.COMException'
occurred in WindowsApplication2.exe

Additional information: Shapes (unknown member) : Invalid request. 
Clipboard is empty or contains data which may not be pasted here.


// Obtain an image stream in "results", which is Byte[]

MemoryStream MemStream = new MemoryStream(results);
DataObject d = new DataObject();
d.SetData(DataFormats.Bitmap, true, MemStream);
Clipboard.SetDataObject(d, true);

PowerPoint.Presentation ppt;
PowerPoint.Application pptApp;
PowerPoint.Slide slide;
pptApp = new PowerPoint.Application();
ppt = pptApp.Presentations.Add(MsoTriState.msoTriStateMixed);

slide = ppt.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutBlank);
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoTrue);

Ajay Abraham
Thursday, December 2, 2004

*  Recent Topics

*  Fog Creek Home