如题,用如下方法调用Excel宏时出现Exception,返回的Scode为00000000,这么解决?try{
//call rsMacro
VARIANT   vtMissing;
vtMissing.vt   =VT_ERROR;
vtMissing.scode=DISP_E_PARAMNOTFOUND;
app.Run(_variant_t("rsMacro"),_variant_t((long)10),vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);   
        //
        book.Save();
        book.Close(covOptional,COleVariant(m_strFilePath),covOptional);
        books.Close();      
        app.Quit();

}   //   End   of   processing.   
    catch(COleException   *e){   
        char   buf[1024];           //   For   the   Try...Catch   error   message.   
        sprintf(buf,   "COleException.   SCODE:   %08lx.",   (long)e->m_sc);   
        ::MessageBox(NULL,   buf,   "COleException",   MB_SETFOREGROUND   |   MB_OK);    book.Save();
        book.Close(covOptional,COleVariant(m_strFilePath),covOptional);
        books.Close();      
        app.Quit();
}   
    catch(COleDispatchException   *e){   
        char   buf[1024];           //   For   the   Try...Catch   error   message.   
        sprintf(buf,   
            "COleDispatchException.   SCODE:   %08lx,   Description:   \"%s\".",   
            (long)e->m_wCode,(LPSTR)e->m_strDescription.GetBuffer(512));   
        ::MessageBox(NULL,   buf,   "COleDispatchException",   
            MB_SETFOREGROUND   |   MB_OK);    book.Save();
        book.Close(covOptional,COleVariant(m_strFilePath),covOptional);
        books.Close();      
        app.Quit();
}   
    catch(...){   
        ::MessageBox(NULL,   "General   Exception   caught.",   "Catch-All",   
             MB_SETFOREGROUND   |   MB_OK);    book.Save();
        book.Close(covOptional,COleVariant(m_strFilePath),covOptional);
        books.Close();      
        app.Quit();
}