Makroer kjøre saktere i Nyere Excel?

March 13  by Eliza

Dave har en Windows XP-system som fortsatt har en gammel versjon av Excel 97 på den. Dette system har en makro som brukes til å behandle informasjon i et regneark. Det er i stand til å behandle 500 rader av informasjon i ca. 12 sekunder. På en nyere maskin, kjører Excel 2010 under Windows 7, tar den samme makrodrifts på de samme dataene ca 3 til 4 minutter å kjøre. Begge maskinene har samme mengde minne (4 GB) og sammenlignbare prosessorer. Dave lurer på hvorfor makroen går så mye tregere på den nyere versjonen av Excel.

Det er veldig vanskelig å gjøre noe, men den mest generelle kommentarer uten å faktisk se koden, men det betyr ikke at det ikke er noe å si. :>) Det første du bør gjøre er å sjekke for å se hvordan makroen gjør sitt arbeid. For eksempel, ikke gå den gjennom alle radene i regnearket til å gjøre sin behandling? (Selv om makro behandler 500 rader med informasjon betyr ikke at det ikke er stepping gjennom hver rad i regnearket.) Grunnen til dette kan være kritisk er fordi tidligere versjoner av Excel kun brukt 65,000+ rader i et regneark, mens de nyeste versjonene kan håndtere 16 ganger så mange rader (mer enn 1 millioner). Hvis makroen tok 12 sekunder å kjøre før, 16 ganger så lang tid ville være 192 sekunder, som er mellom 3 og 4 minutter.

Det er også rapportert at Excel 2010 kommuniserer heller jevnlig med skriverdriveren, på en måte ikke gjort i tidligere versjoner av Excel. Du kan finne ut om dette er bremse ned makroen ved å slå av kommunikasjon i starten av makroen:

Application.PrintCommunication = False

På slutten av makroen, må du huske å sette eiendommen tilbake til True slik at Excel kan igjen kommunisere med skriveren.

Det kan også være at det er noe annerledes med den nyere maskin, selv om forskjellen er subtil. For eksempel kan den nyere maskin har ulike bakgrunnsprogrammer som kjører at eldre maskin-alt fra en anti-virus program til stemmegjenkjenningsprogramvare. I tillegg kan det ha noen annen Excel-tillegg lasting som ikke er på den tidligere system. Du ville ikke tro at slike ting ville påvirke makro ytelse, men de virkelig kunne. Du vil ikke vite, selvfølgelig, til du spore opp hva som lastes, deaktivere den, og deretter prøve å kjøre makroen igjen.

Dessuten kan det være at den nyere maskinen har noen eksterne enheter som den trenger for å hente fra periodisk som kunne bremse ned ting. Jeg har et system på mitt kontor som har en ekstern harddisk, tilkoblet via en USB-port. Til tider, selve systemet (Windows) trenger å gå ut og oppstart den eksterne harddisken, og ting egentlig stoppe på datamaskinen mens dette skjer. Guilty enheter kan være USB vedlegg, skannere, nettverksdisker, etc. Det kan være svært frustrerende, spesielt når det bremser ned noe som ikke bør ta lang tid i det hele tatt.

Et godt forslag i dette tilfellet er å ikke stole utelukkende på det du finner med et enkelt Excel 2010 system. Hvis du har tilgang til flere maskiner, kanskje til og med noen ut av kontoret-prøve makro på dem for å se hva som skjer. Hvis det går raskere, så vet du at det er noe usett på spill på den langsomme 2010 systemet.

Hvis du finner ut at alt er egentlig "lik", da du kan trenge å komme inn i VB Editor på systemet og begynne å gjøre noe tidspunkt for de ulike delene av makroen. Dette er kjedelig, men det kan hjelpe deg å begrense hvor, nøyaktig, er makro bogging ned.

Hvis du velger å gå denne sistnevnte ruten, vil du finne det verdt din tid å investere i en god Excel VBA programmerer oppslagsverk. Det finnes flere på markedet, så shoppe rundt litt. (Du kan ikke gå galt med noe forfattet av John Walkenbach, og jeg har hørt gode ting om Excel 2007 VBA programmerings Reference.)

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (12440) gjelder for Microsoft Excel 2010.