アプリケーションからページを出力する際にメモリが上がっているので調べたところ、
GetCellData関数の
if(formula) data = range.GetFormula();
else data = range.GetValue(vtMissing);
で上がるのを確認しました。
ですが初心者なので、どう直すか悩んでおります。
メモリ使用量を減らすには、どうしたらよいでしょうか。
内容につきましてはマルチポストです。
https://teratail.com/questions/165797

GetCellData関数1

void CExcelCtrl::GetCellData(int cols,int rows,int cole,int rowe,CStringArray &dt,bool formula){
CString sc,ec;
sc.Format("%s%d",Num2Col(cols),rows);
ec.Format("%s%d",Num2Col(cole),rowe);
GetCellData(sc,ec,dt,formula);}

GetCellData関数2

void CExcelCtrl::GetCellData(LPCSTR sc,LPCSTR ec,CStringArray &dt,bool formula){
try{
    //_Application  m_excel;
    _Worksheet ws = m_excel.GetActiveSheet();
    Range range = ws.GetRange(COleVariant(sc),COleVariant(ec));

    COleVariant data;
    if(formula) data = range.GetFormula();
    else        data = range.GetValue(vtMissing);

    COleSafeArray sa;
    sa.Attach(data);

    long rowmax,colmax;
    sa.GetUBound(1,&rowmax);
    sa.GetUBound(2,&colmax);

    CString str;
    VARIANT val;
    long idx[2];

    dt.RemoveAll();
    for(long row = 1;row <= rowmax;row++){
        idx[0] = row;
        for(long col = 1;col <= colmax;col++){
            idx[1] = col;
            sa.GetElement(idx,&val);
            switch(val.vt){
            case    VT_R8:
                str.Format("%1.2f", val.dblVal);
                break;
            case    VT_BSTR:
                str.Format("%s",(CString)val.bstrVal);
                ::SysFreeString(val.bstrVal);
                break;
            case    VT_EMPTY:
                str.Empty();
                break;
            }
            dt.Add(str);
        }
    }
}catch(COleDispatchException *e){
    AfxMessageBox(e->m_strDescription,MB_ICONEXCLAMATION);
    dt.RemoveAll();
}