调用 WorkBook.Save 方法
在系统安装excel 2003 下调用这个方法没不出问题。但 excel 2007 下调用这个方法出错,,各位大侠有没有好的解决方法

解决方案 »

  1.   

    用saveas试试。
    Sub AddSaveAsNewWorkbook()
        Dim Wk As Workbook
        Set Wk = Workbooks.Add
        Application.DisplayAlerts = False
        Wk.SaveAs Filename:="D:\SalesData.xlsx"
    End Sub
      

  2.   

    不行。。源代码 在office 2003 与 office 2007 会有不同的结果,一个2003 不报错。2007下报错。。给个提示
    当然把(      DBGridEhExport := TDBGridEhExportAsXLS.Create;
          try
            DBGridEhExport.DBGridEh := DBGridEh1;
            DBGridEhExport.ExportToFile( DialogW.FileName, IsSaveAll);
          finally
            DBGridEhExport.Free;
          end;)注解了不会出错。。大家结点提示,要怎么解决procedure TForm1.RzBitBtn2Click(Sender: TObject);
    var
      ExcelApp, WorkBook, WSheet: Variant;
      FileName : string;
      ParentWnd: HWND;
      DialogW: TSaveDialog;
      DBGridEhExport: TDBGridEhExportAsXLS;
      IsSaveAll : Boolean;
    begin
      ParentWnd := 0;
      FileName := 'D:\Test\得到硬件信息\1111.xls';
      DialogW := TSaveDialog.Create(Application);
      try
        DialogW.Filter := 'Microsoft Excel 文件(*.xls)|*.XLS';
        DialogW.Options := DialogW.Options + [ofOverwritePrompt,
          ofExtensionDifferent];
        DialogW.DefaultExt := '.XLS';
        if DialogW.Execute then
        begin
          //检查是否加上了后缀
          //用户加入
          if UpperCase(Copy(DialogW.FileName, length(DialogW.FileName) - 3, 4)) <>
            '.XLS' then
            DialogW.FileName := DialogW.FileName + '.xls';
          //检查文件是否存在
          if FileExists(DialogW.FileName) = True then
          begin
            if DeleteFile(pchar(DialogW.FileName)) = false then
            begin
              Exit;
            end;
            //删除后延迟一定时间后再创建文件
            Sleep(100);
          end;
          FileName := DialogW.FileName;
          DBGridEhExport := TDBGridEhExportAsXLS.Create;
          try
            DBGridEhExport.DBGridEh := DBGridEh1;
            DBGridEhExport.ExportToFile( DialogW.FileName, IsSaveAll);
          finally
            DBGridEhExport.Free;
          end;      ExcelApp := CreateOleObject('Excel.Application');
          WorkBook := CreateOleObject('Excel.Sheet');
          try
            WorkBook := ExcelApp.WorkBooks.open(FileName);
            WSheet := WorkBook.Sheets[1];
            ExcelApp.ActiveWindow.DisplayGridlines := False;
            WSheet.cells[1,1] := 'aaa';       // WorkBook.WorkSheets[1].SaveAs(FileName);
            //DisplayAlerts := False;
            WorkBook.Save;
            Application.ProcessMessages;
          finally  //Application.DisplayAlerts = False
        //    WSheet := Unassigned;
         //   WorkBook := Unassigned;
            workBook.Saved   :=   True;
            WorkBook.Close;
            ExcelApp.WorkBooks.Close;
            ExcelApp.Quit;
            ExcelApp := Unassigned;
          end;    end;
      finally
        DialogW.Free;  end;
    end;
      

  3.   

    DBGridEhExport裡面在導出excel後,是否有釋放對excel文件的控制?