各位大哥,小弟为了将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,这该如何解决呢?谢谢各位大哥了。
'打开工作表
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,这该如何解决呢?谢谢各位大哥了。
Set xls = New Excel.Application
xlApp.DisplayAlerts = False '<---------取消提示
......
xls.DisplayAlerts = False '<---------取消提示
------------------------------------------------
Set xlbook = xls.Workbooks.Add '<------------新建一个book
Set xlsheet = xlbook.Sheets.Add '添加一张工作表你的程序每次都是新建一个工作簿,并不是打开指定的工作簿哦,所以每个Book肯定都是4个Sheet了,而你所说的覆盖,我不大明白,能不能说明白一点
类似这样的excel操作,可以在excel里面录制宏,然后再excel里面编辑宏,copy模块里面的代码就可以,只要你在界面能做的excel操作,都可以这样取得代码,很方便的。
------------------------------------------------
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。先谢谢了。