VC将Access中的数据导出到Excel中时遇到的有关问题

VC将Access中的数据导出到Excel中时遇到的问题
导出代码如下所示:
void CDataToExcelDlg::OnButeduce() 
{
// TODO: Add your control notification handler code here
UpdateData(true);
if(m_edit.IsEmpty())
{
MessageBox("文件名不能为空!");
return;
}
_Application app;  
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
COleVariant
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

//创建Excel 2000服务器(启动Excel) 
if (!app.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
exit(1); 

app.SetVisible(false); 
//利用模板文件建立新文档 
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
CString strPath = path;
strPath += "\\DataGridToExcel";
books.AttachDispatch(app.GetWorkbooks(),true); 
book.AttachDispatch(books.Add(_variant_t(strPath)));
//得到Worksheets 
sheets.AttachDispatch(book.GetWorksheets(),true);
//得到sheet1 
sheet.AttachDispatch(sheets.GetItem(_variant_t("sheet1")),true);
CString str1;
str1 = "第1页";
sheet.SetName(str1);
for( int i=0;i<sheets.GetCount()-1;i++)
{
sheet = sheet.GetNext();
str1.Format("第%d页",i+2);
sheet.SetName(str1);
}
sheet.AttachDispatch(sheets.GetItem(_variant_t("第1页")),true);
//得到全部Cells 
range.AttachDispatch(sheet.GetCells(),true); 
CString sText;
m_adodc.GetRecordset().MoveFirst();
for(int setnum=0;setnum<m_adodc.GetRecordset().GetRecordCount()+1;setnum++)
{
for(int num=0;num<m_datagrid.GetColumns().GetCount();num++)
{
if(!setnum)
{
sText.Format("%d",num);
range.SetItem(_variant_t((long)(setnum+1)),_variant_t((long)(num+1)),
_variant_t(m_datagrid.GetColumns().GetItem((_variant_t)sText).GetCaption()));
}
else
{
sText.Format("%d",num);
range.SetItem(_variant_t((long)(setnum+1)),_variant_t((long)(num+1)),
_variant_t(m_datagrid.GetColumns().GetItem((_variant_t)sText).GetText()));
}
}
m_adodc.GetRecordset().MoveNext();
if(!setnum)
{
m_adodc.Refresh();
}
}
//将表格保存
CString name;
name.Format("\\%s.xls",m_edit);
strPath = path + name;
sheet.SaveAs(strPath,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional);
app.SetVisible(true); 

//释放对象 
range.ReleaseDispatch(); 
sheet.ReleaseDispatch(); 
sheets.ReleaseDispatch(); 
book.ReleaseDispatch(); 
books.ReleaseDispatch();
app.ReleaseDispatch(); 
}
输入文件名以后,点击“导出至EXCEL”,然后会弹出一个警告,说“无法找到DataGridToExcel.xls。请检查文件名的拼写,并检查文件位置是否正确。如果您正试图从“文件”菜单上最近使用的文件列表中打开文件,请确认文件未被重命名、移动或删除。”
请问高手这是什么意思?我用的是EXCEL2003。

------解决方案--------------------
不要用GetCurrentDirectory获取程序路径,用GetModuleFileName自己截取一下。
------解决方案--------------------
调试或者用MessageBox打印看路径对不对,然后看文件是否是只读的。