2016-06-23 2 views
1

Excel에서 저장 프로 시저로 매개 변수를 전달하기 위해 SQL 연결의 CommandText를 업데이트하는 VBA 스크립트를 만들었습니다. 자동으로 업데이트 ..Excel/VBA/SQL - 새로 고침이 작동하지 않음

Private Sub CommandButton1_Click() 

Dim BillDate As Date 
Dim BillDateFormat As String 
BillDate = Sheets("Sheet1").Range("B4").Value 

BillDateFormat = Format(BillDate, "yyyy-mm-dd") 

With ActiveWorkbook.Connections("BillDateConnection").OLEDBConnection 
.CommandText = "EXEC TTKWBillingTest @BillDate = '" & BillDateFormat & "'" 


End With 

ActiveWorkbook.Connections("BillDateConnection").Refresh 

End Sub 

을 나는 데이터가 첫 번째 새로 고침 새로 고침 것을 찾는거야 이후 새로 고침이의 CommandText를 업데이트 할 수 있지만 워크 시트의 데이터가 새로 고쳐지지 않습니다. 내가 추가 해봤

..

ActiveWorkbook.RefreshAll 

는하지만이 차이를하지 않습니다.

아이디어가 있으십니까? Excel에서

Private Sub Workbook_open() 

For Each objConnection In ThisWorkbook.Connections 
    'Get current background-refresh value 
    bBackground = objConnection.OLEDBConnection.BackgroundQuery 
    'Temporarily disable background-refresh 
    objConnection.OLEDBConnection.BackgroundQuery = False 
    objConnection.Refresh   'Refresh this connection 
    'Set background-refresh value back to original value 
    objConnection.OLEDBConnection.BackgroundQuery = bBackground 
Next 

End sub 

NB을 여는 데이터 연결이 개방에 업데이트하도록 설정되어있는 경우이 문제가 발생할 수 있습니다 때 ThieWorkbook 객체의

답변

0

를 표시합니다 ... 나는 이것을 알아 냈어.

연결 속성에서 '배경 새로 고침 사용'을 선택 취소해야합니다.

이 옵션을 사용하지 않을 때마다 테이블이 새로 고침됩니다.

1

넣어 코드는 화재 있도록! 연결 관리자에서이 옵션을 제거하는 것이 가장 좋습니다!

이 버튼을 통해 업데이트하려면 :

Private Sub Cmd_RefreshData_Click() 
    Application.Run "'" & ThisWorkbook.Name & "'!ThisWorkbook.Workbook_Open" 
    ActiveWorkbook.RefreshAll 
    Lbl_LastRefresh_Click 
End Sub 

Lbl_LastRefresh 지금 사용() 마지막 새로 고침 시간

+0

이 통합 문서가 열려있는 동안 여러 번 사용되므로 CommandButton에서 업데이트해야합니다. – dazzathedrummer

+0

@dazzathedrummer. 내 대답 업데이트를 참조하십시오 .. – MiguelH

+0

뛰어난! 넌 나를 구했다! –

관련 문제