2017-11-20 17 views
0

나는 다음과 같은 경로를 사용하여 엑셀 2015 ODBC 데이터 당기는 해요 :>> 내 데이터 소스를 선택 테이블을 찾아 만들 쿼리 "쿼리의에서"> "기타 원본"> 엑셀 탭 "데이터"Excel에서 ODBC를 사용하여 매개 변수로 데이터를 가져옵니다. 수동으로로드하는 대신 셀 참조에 코드하는 방법이 있습니까?

쿼리는 "?" 아래에 표시된 "매개 변수"옵션을 유도하십시오. Parameter Pop Up Window

여기 내 ODBC 코드입니다. 셀 "= Sheet1! $ E $ 4"를 참조하는 방법이 있습니까? 팝업이이 정보를 요청하지 않으십니까?

`With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ 
    "ODBC;DSN=####;UID=######;;MODE=SHARE;DBALIAS=####;", 
    Destination:=Range(_ 
    "$A$1")).QueryTable 
    .CommandText = Array(_ 
    "SELECT PHPRTT.PHP_PART_NO, PHPRTT.PHPRTT_UPD_TS" & Chr(13) & "" & 
    Chr(10) & "FROM PHPRTT" & Chr(13) & "" & Chr(10) & "WHERE 
    (PHPRTT.PHPRTT_UPD_TS>=?)") 
    .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_Query1" 
    .Refresh BackgroundQuery:=False 
End With` 
+0

참고 : 가독성 향상을 위해'Chr (13) & ""& Chr (10)을'vbcrlf'로 바꾸십시오. – jsotola

+0

감사합니다. 그 일은 훌륭했습니다. –

답변

0

물론 방법이 있습니다. 코드 줄의 물음표를 참조한다고 가정합니다.

(PHPRTT.PHPRTT_UPD_TS>=?)") 

이것이 올바른 경우 "?" 값 또는 텍스트 (서로 다르면 하나 또는 다른 문자가 필요한 경우)를 사용하여 데이터를 올바르게 코딩해야합니다. "?" 예를 들어 숫자, 텍스트, 날짜.

(PHPRTT.PHPRTT_UPD_TS>=""" & Sheet1!$E$4 & """)") 

을하거나 숫자는 다음이 있다면 : : 예를 들어, 당신이 필요로하는 텍스트 및 매개 변수로 사용하는 엑셀 셀의 그 값의 가정이있을 것이다

(PHPRTT.PHPRTT_UPD_TS>=" & Sheet1!$E$4 & ")") 

희망이 도움이됩니다.

+0

Gene, 아마 내 ODBC 드라이버가 다른 유형입니다. 다음 런타임 오류 '438'나타납니다. "개체가이 속성 또는 메서드를 지원하지 않습니다." –

+0

좋아요, 당신은 팝업 창에 무엇을 입력합니까? – Gene

+0

셀을 수동으로 선택합니다. MSFT Query/ODBC의 묵시적인 한계는 별개의 셀 참조에 입력 할 수있는 능력을 제한한다는 것입니다. 내 작업은 내 사용자를 프로그래밍하고 ODBC 쿼리에 전달하고 매 매크로를 사용하여 매번 만드는 대신 출력 테이블을 새로 고치기 만하면됩니다. –

0

이것은 내 자신의 게시물/질문이지만, 저의 의문의 여지가있는 해결 방법을 발견했습니다. 내 솔루션입니다 : 1. MSFT 쿼리 출력 테이블을 사용하여 독립 실행 형 xlsx를 만듭니다. 2. 데이터> 연결> 정의> 연결 문자열에서 UID와 PASS가 여기에로드되어 있는지 확인하십시오. 3. 매크로를 사용하여이 파일을 열고 데이터를 새로 고친 다음 저장 한 다음 닫습니다.

이것은 최적은 아니지만 지금은 효과가 있습니다. 100kB 크기가 아닌 10MB 파일 크기 범위에있는 여러 파일을 갖겠지 만해야 할 것입니다.