
比如第一次通過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只有最近一次選出來的記錄,謝謝
uj5u.com熱心網友回復:
干嘛不直接發代碼?還弄個圖片,看著怪怪的......那個i不是程序變數?command2代碼呢?
uj5u.com熱心網友回復:
'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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/102493.html
標籤:VB基礎類
