Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^2: Win32::OLE called by subroutine only workes once

by fish (Novice)
on Aug 11, 2009 at 13:21 UTC ( #787614=note: print w/ replies, xml ) Need Help??


in reply to Re: Win32::OLE called by subroutine only workes once
in thread Win32::OLE called by subroutine only workes once

Thanks for your ideas.
$book->Close(1); instead of $book->Close(); seems to work - but please do not ask me why :D

Regards, fish


Comment on Re^2: Win32::OLE called by subroutine only workes once
Select or Download Code
Re^3: Win32::OLE called by subroutine only workes once
by fish (Novice) on Aug 14, 2009 at 06:59 UTC
    Ok, obviously it was just fortune that it worked with close(1).

    Today I want to use the script again and it fails saying: Win32::OLE(0.1709) error 0x80010108: "Das aufgerufene Objekt wurde von den Clients getrennt"

    Does anybody has an idea how I can solve this problem?
      Hi, Even I'm facing same issue The error says "Win32::OLE(0.1709) error 0x80010108: "The object invoked has disconnected from its clients"" I'm calling the function twice which is having excel opening and closing commands. Please help how can I solve this issue?
        I'm writing a script which opens each excel file in a directory, reads some values from the workbook, then closes the workbook, and I had the same problem of Excel quitting when I closed the workbook.

        The inspiration came when I noticed the problem did not happen if I manually opened Excel first (with the default, blank "Book1")

        The work-around I used was to create a new workbook first, process all the files, (open, close, open, close...) then close my "KeepOpen" workbook when I was all done:

        $KeepOpen = $Excel->Workbooks -> Add; # your code / loop here $KeepOpen -> Close;

        Hope this helps,
        -- zaaj

        I've found Excel OLE to be quirky like this. My pseudo subclass suddenly stopped working due to this error, I found it was because the order of operations had changed. I made sure the following global operations happened before any book level or worksheet level op. happened.
        my $ex = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); if (not defined $ex) { die "couldn't get an instance of Excel"; } $ex->{DisplayAlerts}=0; $ex->{SheetsInNewWorkbook} = 1; $ex->{Visible} = 0 ; $Win32::OLE::Warn = 3; # Die on Errors.
      Hello, did you solve this problem? I have the same problem at the moment. My script runs some weeks very fine. But since three days I have this problem. First I get this error only if I try to open the second excel file, now I get it at the first call, too. Thanks in advanced. Tim

      Hello,

      did you solve this problem? I have the same problem at the moment. My script runs some weeks very fine. But since three days I have this problem. First I get this error only if I try to open the second excel file, now I get it at the first call, too.

      Thanks in advanced.
      Tim

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://787614]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (12)
As of 2015-07-03 07:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (48 votes), past polls