我有一个报告来生成sheet1中的命令按钮。我已经写了一些VB代码来每次点击按钮时创建一个新的Excel工作簿,然后在那里转储SQL查询结果。 然而,我的经理想要的是,第一次单击按钮时,应通过打开新工作簿来转储数据,但连续点击应将数据转储到同一工作簿中,而不是新工作表。这应该发生,直到我用命令按钮关闭Excel表。Oracle SQL to Excel使用VBA -Dumb数据在同一工作簿中的不同工作表中
再一次,我用commandbutton打开这个excel,数据应该在第一次点击时转储到一个新的工作簿中,但是对于连续的点击,数据应该被导出到新的工作表中。 请在这里找到我的代码:
Option Explicit
Option Base 1
Private Sub CommandButton1_Click()
Call Ora_connection
ThisWorkbook.Activate
End Sub
Public Sub Ora_connection()
Dim oconn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim i As Integer
Dim xla As New Excel.Application
Dim xlw As New Excel.Workbook
Dim xlws As Excel.Worksheet
strSQL = ' SQL SELECT here1
Set oconn = New ADODB.Connection
oconn.Open "Provider=OraOLEDB.Oracle;Data Source=" & Sheet1.TextBox3.Text & ";User Id=" & Sheet1.TextBox4.Text & ";Password=" & Sheet1.TextBox5.Text & ";"
'-----------------------------------------------------------------------------------
'Open the recordset
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
rs.Open strSQL, oconn, adOpenStatic
'open new workbook and export the data
Set xla = New Excel.Application
xla.Visible = True
Set xlw = xla.Workbooks.Add
xlw.Activate
Set xlws = xlw.ActiveSheet
'to copy the header of the table
With xlws.Range("A2")
For i = 0 To rs.Fields.Count - 1
xlws.Cells(1, i + 1) = rs.Fields(i).Name
Next i
'.ClearContents
.CopyFromRecordset rs
End With
On Error Resume Next
rs.Close
oconn.Close
If Not rs Is Nothing Then Set rs = Nothing
If Not oconn Is Nothing Then Set oconn = Nothing
On Error GoTo 0
End Sub
目前,您不会自动保存文件,因此当您重复使用按钮时,很难在文件上再次进行保留。 ** 2要添加的主要内容**: **将文件**保存在已知位置+名称中, **添加工作表**(将其设置为非常隐藏,并带有代码)以保存参数: -boolean if该文件已创建(如果在您的代码中添加了创建工作簿或添加工作表), 带位置的文件名,或许还有其他东西... 因此,您应该可以提出问题! – R3uK
我可以保存文件,如你所说,这是一个安全的选项和正确的解决方案,但我真的不知道哪些驱动器这些工具将使用这个工具将保存权限。所以我已经打开了这个选项。 –