我有一个SQL查询存储在我使用以下VBA代码执行的Excel工作表单元格中:
Sub run()
Dim dtStart As Date
Dim dtEnd As Date
Dim MRC As Variant
'Get the SQL text(s)
MRC = "" & Worksheets("SQL Text").Range("D4").Value & ""
'Check for UNDF queries
If MRC = 0 Then
MsgBox ("Query has not yet been defined, please make a new selection")
Exit Sub
Else
End If
'Set up query
Application.StatusBar = "Data Refresh: 1 of 1 "
'Update subTabs
Sheets("Summary").Select
With ActiveWorkbook.Connections("connection1").OLEDBConnection
.CommandText = MRC
.CommandType = xlCmdSql
End With
ActiveWorkbook.Connections("connection1").Refresh
End Sub
除了上面的VBA代码之外,我还有另一个VBA代码,它执行不同的SQL视图,并将SQL视图结果集传输到.txt文件并将其保存到特定文件夹中。请参阅下面的代码
Sub TEXT()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strCon, strSQL As String
strCon = "Provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI;Persist Security Info=True;" & _
"Initial Catalog=master;Data Source=VRSQLADHOC;" & _
"Use Procedure for Prepare=1;" & _
"Auto Translate=True;" & _
"Packet Size=4096;" & _
"Use Encryption for Data=False;" & _
"Tag with column collation when possible=False"
strSQL = "SELECT * FROM table1" 'Sql Query
Folder = "U:\" 'Path in U drive
Filename = "file_name_" & Format(Now(), "YYYYMMDD") & ".txt" 'Name of Text document
fpath = Folder & Filename
cn.Open strCon
rs.ActiveConnection = cn
rs.Open strSQL
Set fs = CreateObject("Scripting.FileSystemObject")
Set A = fs.CreateTextFile(fpath)
A.Write (rs.GetString(adClipString, , , vbCrLf, ""))
rs.Close
cn.Close
Set cn = Nothing
MsgBox ("file name " + fpath)
End Sub
目前我有兴趣应用第二个VBA逻辑将结果集数据传输到.txt文件到我的第一个VBA逻辑,它负责执行存储在其中一个Excel工作表单元格中的SQL查询。
简单地说,我想执行存储在Excel单元格中的SQL查询,然后将结果集传输到.txt文件
答案 0 :(得分:0)
如果我理解这一点,那么这两个潜艇都会以不同的方式查询数据库。
在第一个示例中,您在工作表中获得了数据库连接,并且您正在使用单元格来更新该连接。 在第二个中,您已获得与数据库的vba / adodb连接。如果你想做的只是在excel中引用一个单元格来查询,那么只需更改一行:
strSQL = "SELECT * FROM table1" 'Sql Query
更像是:
strSQL = Worksheets("SQL Text").Range("D4").Value