Aktualizace datového připojení MS Quary

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Zamčeno
VALL
Level 1
Level 1
Příspěvky: 95
Registrován: 15 úno 2012 13:28

Aktualizace datového připojení MS Quary

Příspěvek od VALL »

ahoj,
již nekolikátý den se mořím s následující:
Mám datové připojení pomocí Quary do SQL db. Po aktualizaci připojení, tj, tabulky v xls, potřebuji spustit makro.
Nechci použít OnTime, protože, si nejsem naprosto jist její spolehlivosti v kombinaci s datovým připojením a aktualizací dat na pozadí.
Na všech možných fórech jsem našel řešení QuaryTable_AfterRefresh. Kód přikládám. Bohužel, se mě tato záležitost nepodařila rozchodit.
Podle mě je problém v tom, že datové připojení na SQLdb nevrací QuaryTable objekt, ale ListObject objekt. Bohužel se mě to nedaří překonat.
toto jsem vložil do Class

Kód: Vybrat vše

Public WithEvents qt As QueryTable

Private Sub qt_BeforeRefresh(Cancel As Boolean)

Dim a As Integer
Dim My_Prompt As String

 My_Prompt = "Data will be refreshed."                               ' Initialize prompt text for message box.
 a = MsgBox("Do you want to refresh the data now?", vbYesNoCancel)   ' Get YES or NO result from the message box
 
   If a = vbNo Then                                                  ' Check to see wheather YES or NO was selected.
        My_Prompt = "Data will not be refreshed."       ' Change prompt text for message box.
        Cancel = True                                   ' Cancels the Query Refresh.
    End If

   MsgBox My_Prompt                                      ' Displays message box before refresh (or non-refresh) occurs.
End Sub


tento kód jsem vložil do modulu

Kód: Vybrat vše

  Dim X As New Class1

      Sub Initialize_It2()
        Set X.qt = ThisWorkbook.Sheets(2).ListObjects(1).QueryTable
      End Sub


Tento kód je nabízen Microsoftem a různé mutace se objevují i na webu.
VALL
Level 1
Level 1
Příspěvky: 95
Registrován: 15 úno 2012 13:28

Re: Aktualizace datového připojení MS Quary

Příspěvek od VALL »

Tak jsem na to přišel.

Kód: Vybrat vše

Sub Test1()
Dim wrksht As Worksheet
Dim oListObj As ListObject

Set wrksht = ActiveWorkbook.Worksheets("List1")
Set oListObj = wrksht.ListObjects(1)

  oListObj.QueryTable.Refresh BackgroundQuery:=False
  MsgBox "hot"
 End Sub


Důležitý je příkaz BackgroundQuery:=False, který říká "nepokračuj na další řádek do doby, než se připojení ukončí".
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Aktualizace Win 11 : KB5070773
    od Prorock » » v Windows 11, 10, 8...
    10 Odpovědi
    13360 Zobrazení
    Poslední příspěvek od Prorock
  • aktualizace windows 11
    od Lubca » » v Windows 11, 10, 8...
    13 Odpovědi
    13104 Zobrazení
    Poslední příspěvek od MonikaVavrova
  • Nejde nainstalovat aktualizace Win 10 64 (KB5046613)
    od Minapark » » v Windows 11, 10, 8...
    8 Odpovědi
    7541 Zobrazení
    Poslední příspěvek od Minapark
  • help, aktualizace BIOSu z FC - FE nebo FFc, B550 Gaming X (V2 rev. 1.3)
    od blatantq » » v Vše ostatní (sw)
    4 Odpovědi
    9172 Zobrazení
    Poslední příspěvek od kecalek
  • Aktualizace pro Windows Security platform – KB5007651
    od mmmartin » » v Windows 11, 10, 8...
    14 Odpovědi
    17352 Zobrazení
    Poslední příspěvek od mmmartin

Zpět na „Kancelářské balíky“