【问题标题】:Delete a query from excel workbook with Vba使用 Vba 从 Excel 工作簿中删除查询
【发布时间】:2017-12-03 06:57:15
【问题描述】:

我对 VBA 很陌生,正在学习如何在 excel 中添加与数据库的连接。我目前有一个宏,它创建一个名为“Query1”的查询,然后查询我的数据库并返回正确的表。我希望能够在表格输出到 Excel 表后删除查询,以便我可以在稍作修改的条件下再次运行宏,例如不同的日期。

 Sub Macro2()
'
' Macro2 Macro
'


ActiveWorkbook.Queries.Add Name:="Query1", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & "    Source = Odbc.Query(""dsn=Database"", ""SELECT DISTINCT c.IP_TREND_VALUE AS """"PRODUCT"""", c.IP_TREND_TIME , s.IP_TREND_TIME AS TIMES, s.IP_TREND_VALUE AS """"Wttotal""""#(lf)FROM """"Product"""" AS c , """"wtTotal"""" as s#(lf)#(lf)Where  #(lf)#(tab) c.TIME Between '1-JUN-17 05:59:00' AND '2-" & _
    "JUN-17 05:59:00' AND c.TIME = s.IME#(lf)"")" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source" & _
    ""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Query1" _
    , Destination:=Range("$A$1")).QueryTable
    .CommandType = xlCmdSql
    .CommandText = Array("SELECT * FROM [Query1]")
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Query1"
    .Refresh BackgroundQuery:=False
End With

End Sub

我想在表格放入工作表后添加如下内容

ActiveWorkbook.Queries.Delete = Name: = "Query1"

但显然这不存在。如何删除查询或使其可以运行宏而无需删除“Query1”?

【问题讨论】:

    标签: sql excel vba odbc


    【解决方案1】:

    尝试添加以下行。
    Activeworkbook.Queries() 采用名称或索引

    ActiveWorkbook.Queries("Query1").Delete
    

    【讨论】:

      【解决方案2】:

      试试这个:

      For Each Worksheet In ThisWorkbook.Worksheets
          Qcount = Worksheet.QueryTables.Count
          If Qcount > 0 Then
              For Each QueryTable In ws.QueryTables
                  QueryTable.Delete
              Next
          End If
      Next Worksheet
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-14
        • 2023-03-10
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 2019-02-17
        • 1970-01-01
        相关资源
        最近更新 更多