2015-08-28

VBA - 엑셀 시트를 만들면 데이터를 가져오는 소스

VBA작성(Alt+F11)

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim cnnConnect As ADODB.Connection
    Dim rstRecordset As ADODB.Recordset
    
    Set cnnConnect = New ADODB.Connection
    cnnConnect.Open Module1.cnn_str("MsSqlODBC")
    
    Set rstRecordset = New ADODB.Recordset
    rstRecordset.Open _
        Source:="Select * From items", _
        ActiveConnection:=cnnConnect, _
        CursorType:=adOpenDynamic, _
        LockType:=adLockReadOnly, _
        Options:=adCmdText
    
    With ActiveSheet.QueryTables.Add( _
            Connection:=rstRecordset, _
            Destination:=Range("A1"))
        .Name = "Contact List"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
MsSqlODBC 연결문자열은 해당 DB(Oracle, MSSQL, MySql, Access, Excel, Text)에 맞게 ODBC설정한다.

시트를 추가(NewSheet event)하면 아래와 같이 원하는 데이터가 항상 생성 된다.
Result...
iidiproditypeiopbircpiissiadjidesc
1item1F201020200item number1
1item1F201020200item number1
item2I





'

No comments:

Post a Comment