Solved

Help with converting VB EXE to VB DLL - automating Powerpoint.

Posted on 2004-10-19
4
595 Views
Last Modified: 2012-05-05
Hi

I need create a DLL componenet which will be called by an ASP page. The ASP page will call/create the DLL component and pass a list of image names with path info(comma seperated). The DLL will automatically create a Powerpoint presentation and insert the images into it and save the presentation.

I have got the following bit of code working as an EXE app. It does not take any parameters in though. When I create a DLL in Visual Studio and use the same code it compiles but hangs on running.

I would very much appreciate if anyone can help me convert the code to work as DLL and show me how to pass the image names from ASP into VB DLL.

Thank you.

________________________________________________________

Sub InsertImage()

    Dim ppApp As PowerPoint.Application
    Dim ppPres As PowerPoint.Presentation
    Dim ppShape As PowerPoint.Shape
    Dim ppCurrentSlide As PowerPoint.Slide

    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True
   
    Set ppPres = ppApp.Presentations.Add(msoTrue)
    Set ppCurrentSlide = ppPres.Slides.Add(Index:=1, Layout:=ppLayoutBlank)
    ppPres.ApplyTemplate ("C:\cfdeals.ppt")

    With ppCurrentSlide.Shapes
        ' Adds a picture to slide 1 in the active presentation.
        Set oPicture = .AddPicture("C:\image1.jpg", msoFalse, msoTrue, 92, 132, 1, 1)
        ' Now scale the image
        oPicture.ScaleHeight 1, msoTrue
        oPicture.ScaleWidth 1, msoTrue
       
    End With
    ppPres.SaveAs "C:\hello.ppt"
    ppApp.Quit
   
End Sub

_________________________________________________________
0
Comment
Question by:iam_david_lee
  • 2
  • 2
4 Comments
 
LVL 14

Accepted Solution

by:
aelatik earned 250 total points
ID: 12348346
You could try removing all references ( use late binding ) and translating the constants to their real values and try executing it directly from ASP.
This sample works from VBSCRIPT, it means it can also execute in ASP if you set the right permissions to the filesystem.

<%
    Dim ppApp, ppPres, ppShape, ppCurrentSlide

    Set ppApp = CreateObject("PowerPoint.Application")
    Set ppPres = ppApp.Presentations.Add(vbNull)
    Set ppCurrentSlide = ppPres.Slides.Add(1, 12)
        ppPres.ApplyTemplate ("C:\cfdeals.ppt")
    With ppCurrentSlide.Shapes
        Set oPicture = .AddPicture("C:\image1.jpg", vbNull, vbNull, 92, 132, 1, 1)
            oPicture.ScaleHeight 1, vbNull
            oPicture.ScaleWidth 1, vbNull
    End With
   
    ppPres.SaveAs "C:\hello.ppt"
    ppApp.Quit
%>
0
 

Author Comment

by:iam_david_lee
ID: 12360180
Hi

Thanks aelatik. I used your solution but I am getting the following error message.

Microsoft PowerPoint 2002 error '80004005'
Presentation.SaveAs : An error occurred while PowerPoint was saving the file.

I couldn't find much info on this error online....Any ideas....


Thankx.
0
 
LVL 14

Expert Comment

by:aelatik
ID: 12360259
Give the IUSR internet acount access to the folder you are trying to write in. I think its a security issue.
0
 

Author Comment

by:iam_david_lee
ID: 12379400
Thanks. Got it working now...

0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question