http://qs321.pair.com?node_id=517986


in reply to Re: Re: Using Win32::OLE and Excel - Tips and Tricks
in thread Using Win32::OLE and Excel - Tips and Tricks

Hello Monk, Just read your documentation on Excel, and found it extremely useful. I have a problem and looking for some help regarding this. This is my code below
#!/usr/bin/perl use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel'; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); $MacroName = "LargeFileImport"; #Running a macro $excelfile = "c:\\SndExMail\\test.xls"; my $Book = $Excel->Workbooks->Open($excelfile); my $Sheet = $Book->Worksheets("Sheet1"); $Sheet->Activate(); $Excel->Run($MacroName);
I am running a macro, which will generate another excel file with certain values spanning across multiple sheets. Now after i execute the above code, a pop is displayed asking me to save sheet1 (this is generated after the macro is run). I can set displayalerts to 0 but At the same time i want to save the excel file generated by the macro with some name so that i ccan open it for manipulations later. Please let me know how to go about doing this.

Replies are listed 'Best First'.
Re^4: Using Win32::OLE and Excel - Tips and Tricks
by planetscape (Chancellor) on Dec 20, 2005 at 23:10 UTC

    In replying to a (nearly) 4-yr old node, your question is in danger of flying beneath everyone's radar. Better to post under Seekers of Perl Wisdom. To get an idea of how this site works, I recommend looking at the "Welcome to the Monastery" section of the Tutorials page.

    Super Search is also quite helpful. Creative use would turn up nodes like Index of Spreadsheet FAQs.

    ActiveState has an article that shows How to convert a VBA macro to Perl. An offsite reference that may help too is The Spreadsheet Page with its extensive Excel FAQs.

    You may also have on your machine something called "OLE Browser" or "Type Library Browser" if you installed Win32-OLE-0.1403 or upgraded from that to a later version. You might find it in C:\Perl\html\OLE-Browser or C:\Perl\html\lib\site\Win32\OLE depending on your install.

    Something else I've found to be very handy indeed is West Wind Technology's GetConstants utility, which allows you to look at all those cryptic constants MS Office uses. Note that they do shuffle the links around occasionally, so it may be necessary to do some searching.

    Ok, more to the point... The command you are looking for is (in VBA):

    Dim Book as Workbook Book.Save

    or, perhaps,

    Book.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnly +Recommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, +TextCodepage, TextVisualLayout, Local)

    You should now have all the information necessary to tweak this as needed. :-)

    Update: You might also wish to investigate the GetSaveAsFilename function...

    planetscape