各位大哥,小弟为了将MSFlexGrid中选择的行列中的数据写入Excel,写了以下程序:
    '打开工作表
    Set xls = New Excel.Application
    xls.Visible = True
    Set xlbook = xls.Workbooks.Add
    Set xlsheet = xlbook.Sheets.Add   '添加一张工作表
        
    xlsheet.Name = "新资源导出" & Format(Date, "YYYY-MM-DD")
    
    nExcelColPos = 1
    For nCol = startCol To endCol
        xlsheet.Cells(1, nExcelColPos) = grdData.TextMatrix(0, nCol)
        nExcelColPos = nExcelColPos + 1
    Next nCol
    
    
    nExcelRowPos = 2
    nExcelColPos = 1
    For nRow = startRow To endRow
        For nCol = startCol To endCol
            xlsheet.Cells(nExcelRowPos, nExcelColPos).Value = grdData.TextMatrix(nRow, nCol)
            nExcelColPos = nExcelColPos + 1
        Next nCol
        nExcelColPos = 1
        nExcelRowPos = nExcelRowPos + 1
    Next nRow
    
    '保存EXCEL文件
    xlbook.SaveAs sFileName
    '关闭EXCEL对象
    xlbook.Close
    xls.Quit
    Set xlbook = Nothing
    Set xls = Nothing
后来发现有两个问题:
(1)在写入之后,Excel老是弹出一个对话框,提示说Excel文件内容已经改变,是否需要保存,等用户按“是”按钮后才关闭Excel,如何能消除这种提示对话框?
(2)以上程序在指定的Excel文件中增加了一个Sheet,程序重复执行之后,发现在Excel文件中上次执行增加的Sheet会被这次增加的Sheet覆盖,始终保持4个Sheet,这该如何解决呢?谢谢各位大哥了。

解决方案 »

  1.   

    (1)加上一句:
    Set xls = New Excel.Application
    xlApp.DisplayAlerts = False '<---------取消提示
    ......
      

  2.   

    上面变量写错了,xlApp改为xls
    xls.DisplayAlerts = False '<---------取消提示
      

  3.   

    (2)以上程序在指定的Excel文件中增加了一个Sheet,程序重复执行之后,发现在Excel文件中上次执行增加的Sheet会被这次增加的Sheet覆盖,始终保持4个Sheet,这该如何解决呢?
    ------------------------------------------------
        Set xlbook = xls.Workbooks.Add '<------------新建一个book
        Set xlsheet = xlbook.Sheets.Add   '添加一张工作表你的程序每次都是新建一个工作簿,并不是打开指定的工作簿哦,所以每个Book肯定都是4个Sheet了,而你所说的覆盖,我不大明白,能不能说明白一点
      

  4.   

    用代码增加sheet
    类似这样的excel操作,可以在excel里面录制宏,然后再excel里面编辑宏,copy模块里面的代码就可以,只要你在界面能做的excel操作,都可以这样取得代码,很方便的。
      

  5.   

    (2)以上程序在指定的Excel文件中增加了一个Sheet,程序重复执行之后,发现在Excel文件中上次执行增加的Sheet会被这次增加的Sheet覆盖,始终保持4个Sheet,这该如何解决呢?
    ------------------------------------------------
        Set xlbook = xls.Workbooks.Add '<------------新建一个book
        Set xlsheet = xlbook.Sheets.Add   '添加一张工作表你的程序每次都是新建一个工作簿,并不是打开指定的工作簿哦,所以每个Book肯定都是4个Sheet了,而你所说的覆盖,我不大明白,能不能说明白一点
    是这样的,我每次重复执行以下程序:
        Set xlbook = xls.Workbooks.Add '<------------新建一个book
        Set xlsheet = xlbook.Sheets.Add   '添加一张工作表
    发现上次执行以上程序的时候增加的Sheet会消失,Excel始终保持4个Sheet,除了新建Excel文件就存在的3个之外就是此次用程序增加的Sheet,不知道为什么?我想一直增加下去,也就是重复执行以上程序后,Excel中的Sheet数目不断增加,而不是始终保持4个Sheet。先谢谢了。