2017-06-29 291 views
0

我是VBA的新手,並且正在學習如何在Excel中添加數據庫連接。我目前有一個宏創建一個名爲「Query1」的查詢,然後查詢我的數據庫並返回正確的表。我希望能夠在表格輸出到Excel表格後刪除查詢,以便我可以稍微修改條件(例如不同日期)再次運行宏。從VBA中刪除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」的情況下運行宏?

回答

1

嘗試添加以下行。
的Activeworkbook.Queries()需要一個名稱或索引

ActiveWorkbook.Queries("Query1").Delete 
+0

感謝完美的工作! – dgard

+0

非常好,不客氣 –

相關問題