Databasen är inte min utan jag har bara möjligheta att ställa frågor mot den.
.CommandText i nedanstående kod har jag tagit fram genom att exprimentera i Microsoft Query, resterande är klipp och klistra från ett äldre macro.
Variabeln ArtNr hämtas från en tabell som även den är tagen från samma databas med en annan .CommandText och jag loopar den tabellen.
Tabellen kan innehålla t.ex 150 artiklar så för varje rad i tabellen så anropar jag nedanstående kod med ett nytt ArtNr.
Problemet är att när det är väldigt många recordsets så låste sig excel. Vilket gjorde att jag la till TOP 20 för att begränsa hur mycket jag hämtade från databasen. (är artikeln kopplad mot fler än 20 objekt så behöver jag inte veta vilka alla objekten är)
koden fungerar men är brutalt slött. Excel slutar att svara då och då under hela körningen. går det att snabba upp hämtningen på något sätt??
Jag ska bara kopiera data till excel-arket, inga modifikationer skall göras.
Hoppas ni förstår min något flummiga fråga

Kod: Markera allt
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MeritProdSCV;Description=Merit Produktion;;;DATABASE=MeritSCV;LANGUAGE=S" _
), Array("venska;Trusted_Connection=Yes")), Destination:=ThisWorkbook.Sheets("Arbetsblad2").Range("A1"))
.CommandText = "SELECT TOP 20 GOD_D.ART_NR, BXI_D.ANL_NR, GOD_D.BENAMNING1, GOD_D.TYP_BETECKN, ARTREG_D.SENAST_UTT_DATUM FROM MeritSCV.dbo.ARTREG_D ARTREG_D, MeritSCV.dbo.BXI_D BXI_D, MeritSCV.dbo.GOD_D GOD_D WHERE BXI_D.ANL_NRX = GOD_D.ANL_NR AND ARTREG_D.ART_NR = GOD_D.ART_NR AND ((GOD_D.ART_NR='" & ArtNr & "')) ORDER BY BXI_D.ANL_NR"
.Name = "Fråga från VarMeritProd"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With