2013-11-22 2 views
1

내가 쿼리를 만들기 위해 Excel에서 VBA를 사용하고 내가 상수 PART1와Array를 상수로 바꿀 수 있습니까?

St" _ 
      ), Array(_ 
      "efl\zv162_part1.xls 

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array(_ 
     "ODBC;DSN=Excel Files;DBQ=\\St" _ 
     ), Array(_ 
     "efl\zv162_part1.xls;DefaultDir=cesta;DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;PageTimeout=5;" _ 
     )), Destination:=Range("$A$1")).QueryTable 
     .CommandText = Array(_ 
     "SELECT `zv162_part1$`.F2, `zv162_part1$`.F4, `zv162_part1$`.F5, `zv162_part1$`.F6, `zv162_pa" _ 
     , _ 
     "rt1$`.F7, `zv162_part1$`.F8, `zv162_part1$`.F9, `zv162_part1$`.F10, `zv162_part1$`.F11, `zv162_part1$`.F12, `zv162_part1$`.F13, `zv162_part1$`.F14, `zv162_part1$`.F15, `zv162_part1$`.F16, `z" _ 
     , _ 
     "v162_part1$`.F17, `zv162_part1$`.F18, `zv162_part1$`.F19, `zv162_part1$`.F20" & Chr(13) & "" & Chr(10) & "FROM `zv162_part1$` `zv162_part1$`" & "WHERE `zv162_part1$`.F2 <> Null" _ 
     ) 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .PreserveColumnInfo = True 
     .ListObject.DisplayName = "Table_Query_from_Excel_Files13" 
     .Refresh BackgroundQuery:=False 


    End With 

어떤 응답을 주셔서 감사합니다 교체 싶다!

나는

+0

당신이 전체 문자열을 입력 할 수 있습니다 시도 쿼리에 대한 전체 명령을 추가? 'St'_ 앞에있는 부분'''before,'Array'는 다소 혼란 스럽습니다 .... –

+0

매크로 레코더를 사용하여 만들었습니다 –

+0

전체 라인을 붙여 넣을 수 있습니까? –

답변

0

내가 그것을 테스트 할 수 있도록이

part1 = "stefl\zv162_part1.xls" 

With ActiveSheet.ListObjects.Add(_ 
    SourceType:=0, _ 
    Source:=Array(Array("ODBC;DSN=Excel Files;DBQ=" & _ 
    part1 & _ 
    ";DefaultDir=cesta;DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;PageTimeout=5;") _ 
    ), Destination:=Range("$A$1")).QueryTable 
+0

감사합니다. :) 잘 작동합니다. –

관련 문제