外部数据源的简化VBA代码

时间:2014-09-11 15:51:43

标签: sql vba excel-vba excel

所以在我使用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

1 个答案:

答案 0 :(得分:0)

我不记得确切的代码,但是当我再次上班时可以查找它。但是,根据您使用哪种方法获取SQL中的数据(例如ADO或DAO),我会这样做,如果我只是想要原始数据。

如果将变量定义为记录集(例如Dim rst作为记录集),则VBA具有返回记录集中所有数据的功能,如:

Sheets("Sheet 1").Range("A1").CopyFromRecordset rst

将输出记录集中的所有数据。