如题,用如下方法调用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();
}
//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();
}
你用excel命令行能执行宏么?
单用上述方法调用不行