每隔一段時間,獲取一組資料,存入到程式目錄下的xx.xls檔案(如果不存在,則新建)的第一個作業表下,存在第2行里,第1行是已經建好的資料各列的名稱;再隔一段時間,另一組資料存入到同一個作業簿第二個作業表下,同樣也是在第2行;再隔同樣時間,再保存到第一個作業表的第3行下……如此回圈,請問該如何實作?
謝謝!
uj5u.com熱心網友回復:
到底有幾個作業表?第一,第二,是不是還有第三,第四,....excel作業表的數量是有限的......
uj5u.com熱心網友回復:
只有一個作業簿,兩個作業表,第一次保存在第一個作業表里,第二次第二個,然后又是第一個,第二個,輪流保存。uj5u.com熱心網友回復:
把 Excel 當作外部資料庫打開(創建的情況另議,需要 Dir 函式查是否存在,并呼叫 Excel 物件建立空檔案。),用 SQL 陳述句插入記錄即可。Dim cn As New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Book1.xls;Extended Properties=""Excel 8.0;"""
cn.Execute "Insert Into [Sheet1$](fieldname1, fieldname2) Values(fieldvalue1, fieldvalue2)"
cn.Close
Set cn = Nothing
如果你能夠利用時間等判斷出要寫入的表名,則直接用 If 判斷選擇作業表;否則可能需要維護一個記錄,例如寫入作業表 3 的一些資訊。
uj5u.com熱心網友回復:
參考下面最基本的代碼,根據需要自行修改。
Option Explicit
Private Xls As Excel.Application, xBook As Excel.Workbook, xSht As Excel.Worksheet
Private bFile As String
Private Sub Command1_Click()
''開始作業.....
On Error Resume Next
Set Xls = New Excel.Application
bFile = "e:\123.xls"
Set xBook = Xls.Workbooks.Open(bFile)
If xBook Is Nothing Then
Set xBook = Xls.Workbooks.Add
xBook.SaveAs bFile
End If
If xBook Is Nothing Then
MsgBox "存在未知錯誤!無法正常打開或創建作業簿!"
Exit Sub
End If
''判斷作業表數量
If xBook.Worksheets.Count < 2 Then
''如果作業表數量不夠,不管3721添加2個
xBook.Worksheets.Add
xBook.Worksheets.Add
End If
''設定2個表頭
xBook.Worksheets(1).Range("a1") = "時間"
xBook.Worksheets(2).Range("a1") = "時間"
Set xSht = xBook.Worksheets(1) ''第一次用作業表1
''設定定時器
Timer1.Interval = 5000
Timer1.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not xBook Is Nothing Then xBook.Close True
Set xBook = Nothing
If Not Xls Is Nothing Then Xls.Quit
Set Xls = Nothing
End Sub
Private Sub Timer1_Timer()
Dim i As Long
i = xSht.Range("a1").End(xlDown).Row
If i = xSht.Rows.Count Then i = 1
xSht.Range("a" & (i + 1)) = Timer ''暫時用時間值作為資料存盤
''更改xhst
Set xSht = xBook.Worksheets(IIf(xSht Is xBook.Worksheets(1), 2, 1))
xBook.Save
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/123919.html
標籤:VB基礎類
上一篇:求大神給看看,用sendmessage將frame控制元件移動到picturebox中,為何frame會出現邊框(此前已frame.borderstyle=0)
