关于数据导出到Excel,并保存为Excel文件中的错误

关于数据导出到Excel,并保存为Excel文件中的异常
procedure DataToExcel;
var
  ExcelApp: Variant;
begin
  try
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.Visible := True;
    ExcelApp.WorkBooks.Add;
  except
    ShowMessage('未安装Microsoft Excel 2000!请安装!');
    Exit
  end;

  DataToExcelOne(ExcelApp);   //表格一的数据填充
  DataToExcelTwo(ExcelApp);   //表格二的数据填充
  
  ExcelApp.WorkBooks.SaveAs(ExtractFilePath(ParamStr(0)) + 'Doc\' + FormatDatetime('YYYYMMddhhmm', now) + '.xls');
  ExcelApp.WorkBooks.Close;
  ExcelApp.Quit;
end;


程序在SaveAs的时候报错,提示:
关于数据导出到Excel,并保存为Excel文件中的错误
------解决思路----------------------
还是不要使用Delphi自带的ExcelApp。一是特别慢,二是编程代码复杂。
建议敷衍第三方控件,又快又方便。
------解决思路----------------------
uses
 ... ComObj,...

private
  ...
    Excel, XLApp: Variant;
    WorkBook: Variant;
    Sheet1, Sheet2, Sheet3, Sheet4: Variant;
    // SheetAuto, SheetManu: Variant;
    myRange1, myRange2, headRange: Variant;
    myRange1s, myRange1d, myRange2s, myRange2d: Variant;
...


事件中加入:

  try
    XLApp := GetActiveOleObject('Excel.Application'); // 判断是否已启动

  except
    XLApp := CreateOleObject('Excel.Application');
    // 否则启动Excel; 通常自动化服务器启动是隐藏的;
  end;

  try
    WorkBook := XLApp.workBooks.Open(fName);
  except
    Memo1.Lines.Add('未找到文件:' + fName);
    exit;
  end;

  if cbXlVisible.Checked then
    XLApp.visible := true
  else
    XLApp.visible := False;

  // 关闭屏幕刷新
  if cbRefresh.Checked then
    XLApp.ScreenUpdating := true
  else
    XLApp.ScreenUpdating := False;

。。。。。。。。。。。。。。。。

        Sheet3 := XLApp.workBooks[3].WorkSheets['sheet1'];


          if blockCountH = 1 then
            Sheet3.Cells[2, 1].Value := sTitle
          else
            Sheet3.Cells[2, 1].Value := sTitle1;

        sDestFile := getFileNameExcPathSuf(fName) + '_' +
          intToStr((j + 1) div 2) + '-' + intToStr(i) + '_l.xlsx';
        // Memo2.Lines.Add(sDestFile);

        // 正式版 ----
        XLApp.workBooks[3].SaveAs(path + 'result\' + strJuanCode + '\' +
          sDestFile);
        // 正式版 ====

        XLApp.DisplayAlerts:=false;
        XLApp.workBooks[3].close;

。。。。。。。。。。。。。。。。
上面都是我正在用的

可能你的saveas有问题



------解决思路----------------------
XLApp.workBooks[3].SaveAs(path + 'result\' + strJuanCode + '\' +
          sDestFile);