Avatar billede Josvto Mester
09. november 2017 - 17:40 Der er 3 kommentarer

Optimering af macro

Hej Eksperter

Har en macro, som jeg synes er blevet meget langsom. Den skal hente data fra en hjemmeside og smide det ind i excel. Før i tiden tog det ca. 10 sekunder at køre macroen - nu tager det ca. 1 minut og 30 sekunder - PER GANG!!

Jeg har copy+pastes selve table query'en ind nedenfor.

Vil i kigge igennem og se, om der er steder, hvor jeg skal slå noget til/fra for at den kører hurtigere?

*MACRO START*

        With ActiveSheet.QueryTables.Add(Connection:=conString, Destination:=Range("B2"))
            .Name = conName
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = False
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            '.WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            '.WebTables = """yfncsubtit"",8,10,11,13,15,17,19,21,23"
            .WebPreFormattedTextToColumns = False
            .WebConsecutiveDelimitersAsOne = False
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
             
        End With
 
*MACRO SLUT*


Mvh
Josvto
Avatar billede Dan Elgaard Ekspert
09. november 2017 - 18:34 #1
Start din makro med følgende linjer:

      ActiveSheet.DisplayPageBreaks = False
      With Application
            .Cursor = xlWait
            .EnableEvents = False
            .DisplayAlerts = False
            .ScreenUpdating = False
            .AskToUpdateLinks = False
            .IgnoreRemoteRequests = False
            .Calculation = xlCalculationManual
      End With

Efter du har hentet hjemmesiden, så afslut din makro med:

      With Application
            .Calculation = xlCalculationAutomatic
            .EnableCancelKey = xlInterrupt
            .ScreenUpdating = True
            .DisplayAlerts = True
            .EnableEvents = True
            .Interactive = True
            .Cursor = xlDefault
            .StatusBar = False
      End With
Avatar billede claes57 Ekspert
09. november 2017 - 18:47 #2
de to linjer, der starter med
'
laver intet - dvs de kører default indstillinger. Det er måske ikke optimalt.
Avatar billede Josvto Mester
14. november 2017 - 11:17 #3
Dan Elgaard - jeg bruger desværre allerede de linjer, som du henviser til.

Claes - så vidt jeg ved, så har det ingen indflydelse på Macroens hastighed om der står ' foran eller ej. ' betyder bare, at dette ikke køres i macroen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester