odświeżenie tabel z SQL w excelu klikając w guzik

0

Plik posiada 3 tabele zaciągane z Oracle. Każda w innym arkuszu.
Chcę aby na kliknięcie w buttona odświeżało mi dane z dwóch tabel.

Stosuję poniższy kod:

Private Sub CommandButton1_Click()    
    
    Dim sp As Worksheet
    Dim nal As Worksheet
     
    With ThisWorkbook
        Set sp = .Worksheets("Sprzedaż")
        Set nal= .Worksheets("Należności")
    End With
     
    With sp.QueryTables(1)
        .Refresh BackgroundQuery:=False
    End With
     
    With nal.QueryTables(1)
        .Refresh BackgroundQuery:=False
    End With
 
End Sub

Wyłazi błąd : SubScript out of range.
Dodam, że połączenia kwerend działają

Co robię źle ?

0

A w której linii ci ten błąd wyskakuje...?

Zgaduję, że w tej:
sp.QueryTables(1)
Prawdopodobnie sp.QueryTables nie posiada elementu 1, stąd subscript out of range.

0

gdy usunąłem oba (1) to teraz mam błąd:
run-time 438, object doesn't support this property or method

0

Hm, a czemu usunąłęś? Wiesz co robisz....? Wiesz co to jest QueryTables?

0

nie wiem co oznacza ta liczba w nawiasie :P
możesz mnie oświecić i podpowiedzieć rozwiązanie?

0

http://msdn.microsoft.com/en-us/library/office/aa174288(v=office.11).aspx

Use QueryTables(index), where index is the index number of the query table, to return a single QueryTable object.

Subscript out of range na With sp.QueryTables(1) oznacza, że w tej kolekcji nie ma elementu piewszego. Pokaż jak dodajesz query do QueryTables. W świetle posta powyżej nie chce mi się wierzyć w:

Dodam, że połączenia kwerend działają

Inna sprawa, że upewnij się, czy nazwy arkuszy podałeś prawidłowo:

Set sp = .Worksheets("Sprzedaż")
Set nal= .Worksheets("Należności")

Literówka tutaj może sprawić sporo przykrości.

0

gdy zastosowałem kod :
ThisWorkbook.RefreshAll
to mi ładnie wszystkie kwerendy wczytało.
zdjęcie w załączniku

0

zastosowałem ten kod i zadziałało :

Private Sub CommandButton2_Click()
Sheets("Sprzedaż").Select
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
    Sheets("Raport obrotu").Select
End Sub

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.