복붙노트

[SQL] VBA를 사용하여 Excel 통합 문서에서 쿼리를 삭제

SQL

VBA를 사용하여 Excel 통합 문서에서 쿼리를 삭제

나는 VBA 꽤 새로운 오전 Excel에서 데이터베이스에 연결을 추가하는 방법을 배우고있다. 나는 현재 그 다음 내 데이터베이스를 쿼리 "에 Query1"이라는 쿼리를 작성하고 올바른 테이블을 반환하는 매크로를 가지고있다. 나는 약간 수정 된 조건 예를 들어, 다른 날짜로 다시 매크로를 실행할 수 있도록 테이블이 엑셀 시트에 출력 후 쿼리를 삭제할 수 있도록하고 싶습니다.

 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. ==============================

    1.다음 줄을 추가하십시오. Activeworkbook.Queries ()는 이름 또는 색인 소요

    다음 줄을 추가하십시오. Activeworkbook.Queries ()는 이름 또는 색인 소요

    ActiveWorkbook.Queries("Query1").Delete
    
  2. from https://stackoverflow.com/questions/44827417/delete-a-query-from-excel-workbook-with-vba by cc-by-sa and MIT license