0
데이터를 처음으로 '원시'워크 시트로 가져 오는 매크로를 만들었습니다. 가져 오기 전에 'Raw'시트가 먼저 이전 데이터를 지 웁니다.
그런 다음 VBA에서 SQL을 사용하여 쿼리하고 최종 출력을 원하는 형식으로 가져옵니다.
최근에 "연결된 Microsoft Excel 워크 시트를 볼 수있는 연결이 끊어졌습니다."라는 오류 메시지가 나타나는 문제가 발생했습니다.Excel VBA SQL 쿼리
데이터를 가져 오기 전에 '원시'시트를 지우지 않으면 동일한 매크로가 작동합니다. 도움을 주시면 감사하겠습니다.
Option Explicit
Public ROW As Integer
Public Cnn As New ADODB.Connection
Public Rs As New ADODB.Recordset
Public StrSQL As String
Public Sub OpenDB()
If Cnn.State = adStateOpen Then Cnn.Close
Cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _
ActiveWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name
Cnn.Open
End Sub
Public Sub CloseRS()
If Rs.State = adStateOpen Then Rs.Close
Rs.CursorLocation = adUseClient
End Sub
Sub MonthlyYorN()
StrSQL1 = "SELECT * FROM [RAW$] where SOME CONDITION"
StrSQL1 = "SELECT * FROM [RAW$] where SOME CONDITION2"
StrSQL = StrSQL1 & " UNION " & StrSQL2
CloseRS
OpenDB
Rs.Open StrSQL, Cnn, adOpenKeyset, adLockOptimistic
If Rs.RecordCount > 0 Then
'Do Something
End If
End Sub
너무 많은 코드가 너무 간단합니다. MS Query를 사용하지 않는 이유는 무엇입니까? –
@DaveSexton 게시하는 동안 쿼리를 삭제했습니다. 실제 StrSQL1과 StrSQL2는 약간 복잡한 쿼리입니다. – Maruthi
MS 쿼리 (또는 VBA를 통해)에 직접 SQL 문을 붙여 넣을 수 있으므로 문제가되지 않는 문이 얼마나 복잡한 지 상관없이 MS 쿼리가 워크 시트의 모든 데이터 새로 고침을 처리합니다. –