比如第一次通过Command1选出了20条记录,然后按Command2新建一个名为a.xls的excel,并将这20条记录存进去;但是下一次通过Command1选出10条记录,然后按Command2新建一个名为b.xls的 excel,将这10条记录存进去。发现b.xls的前10条记录是第二次选择得到的,但是后面还有10条,是a.xls的后10条,请问如何写代码可以做到不覆盖,b.xls只有10条记录,每次保存的excel只有最近一次选出来的记录,谢谢

解决方案 »

  1.   

    干嘛不直接发代码?还弄个图片,看着怪怪的......那个i不是过程变量?command2代码呢?
      

  2.   

    'Adodc1连接表1.xls;Command1按条件从1.xls选出记录
    Private Sub Command1_Click()
    '''下句为按日查询语句''''
        sqlstr1 = " select * from [sheet1$] where year(时间)= '" & year & "'and month(时间)='" & month & "'and day(时间)='" & day & "' "
        Adodc1.RecordSource = sqlstr1
        Adodc1.Refresh'''''datagrid显示所查询的温度''''
        Set DataGrid1.DataSource = Adodc1
        DataGrid1.Refresh
    End Sub
    'Command2按路径新建一个excle文件,将Command1选出的记录保存在该文件中
    Private Sub Command2_Click()
    Dim recordtime(300) As String
    Dim recordch1(300) As Single
    i = i + 1 'i是Command1选出的记录数
    Adodc1.Recordset.MoveFirst
    '取Command1选出的第一条记录
    recordtime(i) = Adodc1.Recordset.Fields("时间")
    recordch1(i) = Adodc1.Recordset.Fields("ch1")
    '取Command1选出的余下记录
    While (Adodc1.Recordset.AbsolutePosition <> Adodc1.Recordset.RecordCount)
    Adodc1.Recordset.MoveNext
    i = i + 1
    recordtime(i) = Adodc1.Recordset.Fields("时间")
    recordch1(i) = Adodc1.Recordset.Fields("ch1")
    DoEvents
    Wend
    Dim storeloca As String '保存路径
    Set Ex = CreateObject("Excel.Application")
    Set ExBook = Ex.Workbooks().Add
    Set ExSheet = ExBook.Worksheets("Sheet1")
    storeloca = Trim(Trim(pos.Text) + Trim(":\") + Trim(nameexcel.Text) + Trim(".xls"))
    For j = 1 To i
    Cells(j, 1).Value = recordtime(j)
    Cells(j, 2).Value = recordch1(j)
    Next j
    i = 0
    j = 0
    ActiveWorkbook.SaveAs (storeloca)
    Ex.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xls = Nothing
    End Sub