VBS:将SQL拉到Excel文件

我试图创build一个简单的VBS脚本,将允许SQL查询创build一个Excel文件。 我所有的代码在下面的工作,除了把所有3列我select到单元格A1。 我怎样才能得到它与标题创build一个标准的Excel输出?

set objExcel = CreateObject("Excel.Application") objExcel.Application.DisplayAlerts = False set objWorkbook=objExcel.workbooks.add() Dim Connection Dim Recordset Dim SQL SQL = "SELECT PersonID, FirstName, LastName FROM [TestDB].[dbo].[Persons]" Set Connection = CreateObject("ADODB.Connection") Set Recordset = CreateObject("ADODB.Recordset") Connection.Open = "Provider=SQLOLEDB; Data Source=compname\SQL; Initial Catalog=DB; UID=usera; Integrated Security=SSPI" Recordset.Open SQL, Connection dim resultString, oRS Set oRS = Connection.Execute(SQL) resultString = oRS.GetString Recordset.Close Set Recordset=nothing Connection.Close Set Connection=nothing Set objWorksheet = objExcel.Worksheets("Sheet1") objWorksheet.Name = "Third" objWorksheet.Activate objWorksheet.Cells(1, 1).Value = resultString objWorkbook.Saveas "C:\Users\usera\Desktop\Testing.xlsx" objWorkbook.Close objExcel.workbooks.close objExcel.quit set objExcel = nothing msgbox("Saved") 

你将所有的数据放入一个单独的string中,并且resultString = oRS.GetString 。 为什么你会期望这个string将自己parsing回单个值来填充单元格?

您需要从logging集的Fields集合中读取并填充每个单元格。 这是一个示例,显示你将如何这样做。 (提示:你的代码包含许多重复的东西,这是没有必要的 – 注意我的代替)。

 Dim Conn Dim RS Dim SQL SQL = "SELECT PersonID, FirstName, LastName FROM [TestDB].[dbo].[Persons]" Set Conn = CreateObject("ADODB.Connection") Conn.Open = "Provider=SQLOLEDB; Data Source=compname\SQL; Initial Catalog=DB; UID=usera; Integrated Security=SSPI" Set RS = Conn.Execute(SQL) Set Sheet = ActiveSheet Sheet.Activate Dim R R = 1 While RS.EOF = False Sheet.Cells(R, 1).Value = RS.Fields(0) Sheet.Cells(R, 2).Value = RS.Fields(1) Sheet.Cells(R, 3).Value = RS.Fields(2) RS.MoveNext R = R + 1 Wend RS.Close Conn.Close