我的数据库有好几个表,我只要其中三个,并且把这三个表合并为一个大的表,用ado的方式,并且从 excel 中输出来!
    这样我想能够办到,我虽然是自己想,自己做的。但从来没有做过.但我还是想各位提供些意见或观点! 或者给些技术或文挡上的支持!!谢了.

解决方案 »

  1.   

    请问:rifnxa(把vc學到底) :
       我也想的和你一个样。不过我还没做过怎么样在程序里读入一个宏,要怎样写。而在excel里写一个宏是怎么样个原理。怎么样写的。拜托了
       能不能提供一些详细些的经验,或者文档代码之类的。
       先谢谢了!
       一会晚上给分!
      

  2.   

    在程序里調用宏:
    creatreport();
        CoInitialize(NULL); 
        _Application ExcelApp; 
    Workbooks wbsMyBooks; 
        _Workbook wbMyBook; 
    Worksheets wssMysheets; 
    _Worksheet wsMysheet; 
    Range rgMyRge,range;
    char pathstr[255];
    GetCurrentDirectory(255,pathstr);
    strcat(pathstr,"\\xunfa0.xls");
    try
    {
    COleException *e = new COleException;
    if(!ExcelApp.CreateDispatch("Excel.Application.9",e))
    throw e;
    }
    catch (COleDispatchException * e)
    {
    CString cStr;
    if (!e->m_strSource.IsEmpty())
    cStr = e->m_strSource + " - ";
    if (!e->m_strDescription.IsEmpty())
    cStr += e->m_strDescription;
    else
    cStr += "unknown error";
    AfxMessageBox(cStr, MB_OK,
    (e->m_strHelpFile.IsEmpty())? 0:e->m_dwHelpContext);
    e->Delete();
    }
    CString strsql,str,month1,strsql1;
    COleDateTime date1;
    VARIANT date;
    date.vt=VT_DATE;
    date=m_date1.GetValue();
    date1=date.date;
    str=date1.Format("%Y年%m月");
    month1=str+"順發公司來料明細表";
    strsql=str+"順發A公司付貨明細表";
    strsql1=str+"順發B公司付貨明細表";
    //利用模板文件建立新文件
    ExcelApp.SetCaption(_T("順發報表"));
    wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
    wbMyBook.AttachDispatch(wbsMyBooks.Add(COleVariant(pathstr)));
    ExcelApp.SetVisible(true);
    //得到Worksheets
    wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
    //得到sheet1
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((short)1)),true);
    //得到矩形
    wsMysheet.Select(_variant_t((short)1));
    rgMyRge=wsMysheet.GetRange(COleVariant("A1"),COleVariant("J1"));
    rgMyRge.SetItem(_variant_t((short)1),_variant_t((short)1),_variant_t(month1));
    //調用宏
    ExcelApp.Run(_variant_t("Macro1"),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,vtMissing);
    //得到表sheet2
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((short)2)),true);
    //得到矩形
    wsMysheet.Select(_variant_t((short)2));
    rgMyRge=wsMysheet.GetRange(COleVariant("A1"),COleVariant("J1"));
    rgMyRge.SetItem(_variant_t((short)1),_variant_t((short)1),_variant_t(strsql));
    ExcelApp.Run(_variant_t("Macro2"),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,vtMissing);
    //得到表sheet2
    wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t((short)3)),true);
    //得到矩形
    wsMysheet.Select(_variant_t((short)3));
    rgMyRge=wsMysheet.GetRange(COleVariant("A1"),COleVariant("J1"));
    rgMyRge.SetItem(_variant_t((short)1),_variant_t((short)1),_variant_t(strsql1));
    //調用宏
    ExcelApp.Run(_variant_t("Macro3"),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,vtMissing);
    wbMyBook.SetSaved(true);
    wbMyBook.PrintPreview(COleVariant((short)0));
    rgMyRge.ReleaseDispatch();
    wsMysheet.ReleaseDispatch();
    wssMysheets.ReleaseDispatch();
    wbMyBook.ReleaseDispatch();
    wbsMyBooks.ReleaseDispatch();
    ExcelApp.ReleaseDispatch();
    delreport();
    CDialog::OnOK();
    其實在excel里創建宏很簡單,用自動錄取.再修改一下,稍懂一點vba就行.