VBA代码下面将创建Excel QueryTable对象,并显示它开始在范围(“D2”)。这个目标范围的具体地址并不重要。
我的问题是 - 是否有可能手动将值输入到内存中的记录集,然后从中读取表?换句话说,我想在VBA中指定表列和值,而不是来自数据库或文件。
Public Sub Foo()
Dim blah As QueryTable
Dim rngTarget As Range
Dim strQuery As String
strQuery = "SELECT * FROM MY_TABLE"
Set rngTarget = Range("D2")
Dim qt As QueryTable
Set qt = rngTarget.Worksheet.QueryTables.Add(Connection:= _
"ODBC;DRIVER=SQL Server;SERVER=MY_SQL_SERVER;APP=MY_APP;Trusted_Connection=Yes", Destination:=rngTarget)
With qt
.CommandText = strQuery
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.Name = "MY_RANGE_NAME"
.MaintainConnection = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = False
.Refresh BackgroundQuery:=False
End With
End Sub
这就是我最终要做的,除了它的Web查询版本,但据Excel知道它是同样的事情。运行.Refresh方法后,您只需删除查询表。 – AlanR 2009-01-12 19:04:11