以下是將數據從oracle數據庫提取到excel的VB代碼。將數據從oracle讀取到excel並將具有相同單元名稱的數據發送到excel中的不同工作表的代碼
從表TABLE_NAME的COLLABNAME選項卡有20個不同的合作名字,我想從工作表Sheet1
發送對應於每個協作,不同的紙張開始的數據目前我打算寫相同的代碼20次,取數據到不同的表和代碼如下所示
當前代碼:
Sub Load_data()
Sheets("Sheet1").Select
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim col As Integer
Dim row As Integer
Dim Query As String
Dim mtxData As Variant
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open (_
"User ID=USERID" & _
";Password=PASSWORD" & _
";Data Source=xx.xx.xx.xxx:xxxx/xxxx" & _
";Provider=OraOLEDB.Oracle")
rs.Open "select COLLABNAME,DATETIME,TOTALFLOWS from TABLE_NAME WHERE to_date(DATETIME, 'DDMMYYYY HH24:MI') BETWEEN case when to_char(sysdate, 'dd') > 7 then trunc(sysdate-7) else trunc(sysdate,'mm') end AND trunc(sysdate) AND COLLABNAME like 'COLLABNAME1' ORDER BY DATETIME ASC", cn
With Sheet1
col = 0
'First Row: names of columns
Do While col < rs.Fields.Count
.Cells(1, col + 1) = rs.Fields(col).Name
col = col + 1
Loop
mtxData = Application.Transpose(rs.GetRows)
.Range("A2").Resize(UBound(mtxData, 1) - LBound(mtxData, 1) + 1, UBound(mtxData, 2) - LBound(mtxData, 2) + 1) = mtxData
End With
rs.Close
rs.Open "select COLLABNAME,DATETIME,TOTALFLOWS from TABLE_NAME WHERE to_date(DATETIME, 'DDMMYYYY HH24:MI') BETWEEN case when to_char(sysdate, 'dd') > 7 then trunc(sysdate-7) else trunc(sysdate,'mm') end AND trunc(sysdate) AND COLLABNAME like 'COLLABNAME2' ORDER BY DATETIME ASC", cn
With Sheet2
col = 0
'First Row: names of columns
Do While col < rs.Fields.Count
.Cells(1, col + 1) = rs.Fields(col).Name
col = col + 1
Loop
mtxData = Application.Transpose(rs.GetRows)
.Range("A2").Resize(UBound(mtxData, 1) - LBound(mtxData, 1) + 1, UBound(mtxData, 2) - LBound(mtxData, 2) + 1) = mtxData
End With
rs.Close
End Sub
我繼續的代碼只有兩個COLLABNAMES
我要添加一個環含有COLLABNAME1,COLLABNAME2,COLLABNAME3,COLLABNAME4 ... COLLABNAME20以使得被取出,從這降低了碼長和更優雅表TABLE_NAME 20分不同片數據
在此先感謝
如果COLLABNAME不是爲了象COLLABNAME1,COLLABNAME2 ... 和都是不同的像Collab_Name1_01,Collab_NAme2_02,Collab_NAME1_NAME2 .... 我不能使用的代碼,對於i = 1〜20如上述 您能否告訴我在這種情況下修改代碼 – user1292831 2012-03-29 11:37:06
已添加上面的相關代碼。 :) – 2012-03-29 13:41:10
如何更改選擇語句代碼,如果我不想重複它 rs.Open「從TABLE_NAME選擇COLLABNAME,DATETIME,TOTALFLOWS WHERE to_date(DATETIME,'DDMMYYYY HH24:MI')BETWEEN case to_char(sysdate, 'dd')> 7 then trunc(sysdate-7)else trunc(sysdate,'mm')結束AND trunc(sysdate)AND COLLABNAME like'「&CollabName&」'ORDER BY DATETIME ASC「,cn – user1292831 2012-03-29 13:45:34