[python-win32] Connecting to Python COM server from Excel VBA does not work - Windows 7

Matteo Boscolo matteo.boscolo at boscolini.eu
Fri Jul 22 11:07:50 CEST 2011


Hi,
i use your script with this vbs:

dim PythonUtils
Set PythonUtils = CreateObject("PythonDemo.Utilities")
call 
PythonUtils.add_watermark("d:\pippo.pdf","pluto_pluto","d:\pippooooo.pdf")

and it works well on win7 64Bit


May be reinstalling python, or win32com could be the right choice

Regards,
Matteo

Il 21/07/2011 19:05, dennis chou ha scritto:
> Hello,
>
> I recently upgraded to 32-bit windows 7.
>
> For some reason, I am getting an automation error when i try to run my 
> excel VBA script to call my Python COM server.
>
> Here's the script for the python COM server.  This is creating a COM 
> server to watermark a PDF.
>
> import pythoncom
> class PythonUtilities:
>     _public_methods_ = [ 'add_watermark' ]
>     _reg_progid_ = "PythonDemo.Utilities"
>     # NEVER copy the following ID
>     # Use "print pythoncom.CreateGuid()" to make a new one.
>     _reg_clsid_ = "{B7E3EE50-5E2A-4044-8241-4F76B1DAB894}"
>
>     def add_watermark(self, pdf_input_path, watermark_string, 
> pdf_output_path):
>         import StringIO
>         from pyPdf import PdfFileReader, PdfFileWriter
>         from reportlab.pdfgen import canvas
>
>         output = PdfFileWriter()
>
>         #create watermark
>         packet = StringIO.StringIO()
>         c = canvas.Canvas(packet)
>         c.drawString(500,750,watermark_string)
>         c.save()
>         packet.seek(0)
>         watermark = PdfFileReader(packet)
>
>         input = PdfFileReader(file(pdf_input_path, "rb"))
>
>         pdf_path_page_count = input.getNumPages()
>         print pdf_path_page_count
>
>         for page in range(pdf_path_page_count):
>             print page
>             current_page = input.getPage(page)
>             current_page.mergePage(watermark.getPage(0))
>             output.addPage(input.getPage(page))
>
>         outputStream = file(pdf_output_path, "wb")
>         output.write(outputStream)
>         outputStream.close()
>
>     # Add code so that when this script is run by
>     # Python.exe, it self-registers.
>
> if __name__=='__main__':
>     print "Registering COM server..."
>     import win32com.server.register
>     win32com.server.register.UseCommandLine(PythonUtilities)
>
>
>
>
>
> In Excel VBA, when i try to run
>
> Set PythonUtils = CreateObject("PythonDemo.Utilities")
>
>
>
> i get an automation error stating that the module cannot be found.
>
> Looking around on the web, i see that Diego had a similar issue and he 
> resolved it by properly installing Python.  I believe Python is 
> properly installed on my workstation so I don't think that is creating 
> the issue.
>
> Thanks,
> dennis
>
>
>
> _______________________________________________
> python-win32 mailing list
> python-win32 at python.org
> http://mail.python.org/mailman/listinfo/python-win32
>
>
> Nessun virus nel messaggio.
> Controllato da AVG - www.avg.com <http://www.avg.com>
> Versione: 10.0.1390 / Database dei virus: 1518/3778 - Data di 
> rilascio: 21/07/2011
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20110722/cb121d71/attachment.html>


More information about the python-win32 mailing list