gpt4 book ai didi

excel - VBA excel宏

转载 作者:行者123 更新时间:2023-12-04 20:48:08 25 4
gpt4 key购买 nike

我在 Excel 中有这个 VBA 宏。当用户单击工作表上的按钮时,宏会将结果返回到工作表。
我想问的是,如何使用下面的代码在同一张表中运行多个查询(返回不同的结果)?

Sub Stats2()
Workbooks("macro.xls").Sheets("Sheet3").Select
ActiveSheet.Range("A1").Select

Dim objConn As ADODB.Connection
Dim rsData As ADODB.Recordset
Dim strSQL As String
szconnect = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=*******88;Data Source=****"

''#Create the Connection and Recordset objects.
Set objConn = New ADODB.Connection
Set rsData = New ADODB.Recordset

On Error GoTo errHandler

''#Open the Connection and execute the stored procedure
objConn.Open szconnect
strSQL = "select * from CATEGORY_TYPE "
objConn.CommandTimeout = 0
Set rsData = objConn.Execute(strSQL)

For iCols = 0 To rsData.Fields.Count - 1
ActiveSheet.Range("A3").Select
ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + iCols).Value = rsData.Fields(iCols).Name
ActiveSheet.Cells.Font.Name = "Arial"
ActiveSheet.Cells.Font.Size = 8
ActiveSheet.Cells.EntireColumn.AutoFit
Next

ActiveSheet.Range(ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column), ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + rsData.Fields.Count)).Font.Bold = True
j = 2

If Not rsData.EOF Then
''#Dump the contents of the recordset onto the worksheet
On Error GoTo errHandler
ActiveSheet.Cells(ActiveCell.Row + 1, ActiveCell.Column).CopyFromRecordset rsData
If Not rsData.EOF Then
MsgBox "Data set too large for a worksheet!"
End If
rsData.Close
End If

Unload frmSQLQueryADO
Exit Sub

errHandler:
MsgBox Err.Description, vbCritical, "Error No: " & Err.Number
''#Unload frmSQLQueryADO
End Sub

最佳答案

您应该从上级程序中准确调用此过程,将查询和起始单元格作为参数传递,您可以按照您的需要多次运行它来填充工作表。

小例子:

sub stats2()
dim lastrow as string
lastrow = "A1"
lastrow = Query1(lastrow,"select * from foo")
lastrow = Query1(lastrow,"select * from other")
end sub

sub query1(startingrow as string, sqlquery as string) as string
'your code here. Take in mind that you can have a connection opened outside of here
'The rest could be the same
'just use the two parameters, one for the query, the other for the range you
'start filling the columns name.
[code here]
'return the las used row.
end sub

关于excel - VBA excel宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com