因此,在我所有使用SQL查询数据库的VBA宏中,我只是使用了在Excel中录制宏时自动输入的内容。有没有办法简化它?它先把它插入到一个表中,但实际上我只想把原始数据放在电子表格中。。。它不需要看起来好看。
Sheets("Sheet1").Select
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=AS400;" _
, Destination:=Range("$A$1")).QueryTable
.CommandText = strSQL
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_LOCAL_ITEM"
.Refresh BackgroundQuery:=False
End With
ActiveSheet.ListObjects("Table_LOCAL_ITEM").Unlist
Cells.Select
Selection.ClearFormats
我记不清确切的代码,但可以在重新开始工作时查找。但是,根据您在SQL中使用哪种方法获取数据(例如ADO或DAO),如果我只是想要原始数据,我会这样做。
如果您将一个变量定义为记录集(例如Dim rst作为记录集),VBA有一个函数可以返回记录集中的所有数据,类似于:
Sheets("Sheet 1").Range("A1").CopyFromRecordset rst
它将输出记录集中的所有数据。