18. januar 2004 - 14:54Der er
24 kommentarer og 1 løsning
Hvorfor er denne kode så dræbende langsom
For Each ws In ActiveWorkbook.Worksheets With ws.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = strCopyRight .CenterFooter = "" .RightMargin = Application.InchesToPoints(0.5) .TopMargin = Application.InchesToPoints(1) .BottomMargin = Application.InchesToPoints(0.5) .PaperSize = xlPaperA4 Select Case bytType Case conTAXA .RightFooter = "TAXAmeter afregning" .Orientation = xlPortrait 'Print portrait .LeftMargin = Application.InchesToPoints(1) Case conCash .RightFooter = "Kontantafregning" .Orientation = xlPortrait 'Print portrait .LeftMargin = Application.InchesToPoints(1) Case conDrivers .RightFooter = "Chaufførliste" .Orientation = xlLandscape 'Print landscape .LeftMargin = Application.InchesToPoints(0.5) Case conYear .RightFooter = "Årsopgørelse" .Orientation = xlPortrait 'Print portrait .LeftMargin = Application.InchesToPoints(1) Case Else .RightFooter = "" .Orientation = xlPortrait 'Print portrait .LeftMargin = Application.InchesToPoints(1) End Select End With Next ws
Jeg bruger ovenstående fordi jeg på den måde mener at jeg er nogenlunde sikker på at mine udskrifter passer. Men det tager op til flere minutter at eksekvere koden og det er jeg ikke tilfreds med ( eller brugerne er ikke tilfredse må jeg hellere sige )
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Ok, det er langsom, men hvis man bruger kode fra excel 4 kan det gå meget hurtigere. test det her. Jeg har fået det til at virke, men måske skal du have lidt mere hjælp, da jeg ikke har set resten af koden :-) (max 7 sek.)
Bemærk at alle de steder du havde reference til PageDetup (.) er ændret til strenge.
For Each ws In ActiveWorkbook.Worksheets ws.Activate LeftFooter = "&L" & strcopyright RightMargin = "0.5" 'Application.InchesToPoints(0.5) TopMargin = "1" 'Application.InchesToPoints(1) BottomMargin = "0.5" 'Application.InchesToPoints(0.5) PaperSize = xlPaperA4 '9
Hvis du lige ser på left & rightfooter findes dette ikke i xl4 med man kan højre og venstrestiile dele tekst "&R TAXAmeter afregning" højrestiiler teksten "&L" & strcopyright venstrestiller strcopyright
Det der mangler i den viste kode, er dimensionering af variable, Application.ScreenUpdating = False + sidst - fejlhåndtering og Application.ScreenUpdating = True
Jeg har rodet en del med koden og den måde jeg kalder den på og er kommet frem til en anden måde at kalde det på der gør at jeg kun ændrer på et sheet i workbook'en og det giver et resultat der ligger omkring 8 sek. og det er nok så hurtigt som det kan lade sig gøre. Det lader dog til at der kan hentes lidt mere ved at bruge din metode bak, så det vil jeg da efterprøve.
Den mulighed tror jeg ikke jeg kan få til at spille da jeg i flere tilfælde går det at jeg sætter data ind på nogle sheets som normalt er skjulte og så skriver jeg ud når der trykkes på en knap på et andet ark. Så vidt jeg lige kan se vil det give mig et forkert navn da det jo er arket med knappen der er aktiv.
I øvrigt så virker koden tilsyneladende ekstremt hurtigt - jeg kan komme ned på 1 sek. pr. side og når jeg så får det til at spille så det kun er den enkelte side der ændres på, så er det helt acceptabelt.
Så bak hvis du lige smider et svar så du kan få dine velfortjente point
PS: "Parametrene for sideopsætning i XL4-makroer er PAGE.SETUP(Hoved, fod, v.margin, h.margin,topmargin, bundmargin, Overskrifstlinie, gitter, vandret centreret, lodret centreret, orientering, papirstr, skala%, sidetal, udskriftsrækkefølge, sh/farve (Sand=sort/Hvid))" Hvis sh/farve (Sand=sort/Hvid) står til True kan det så bevirke at de liniefarver jeg har lavet ikke skrives ud ? Jeg har lavet det så hver anden linie i en af udskrifterne skulle være lys-grøn, men det er forsvundet nu.
Hent den bare alligevel, det har ingen praktisk betydning med versionerne. Det er kun selve hjælpefilen der er interessant. Du kan sikkert finde den i c:\programmer\office og den hedder xlmacr8.hlp Denne fil kan åbnes via stifinder.
jeg fandt et link til en dk-version, men skal du bruge det direkte i vba så må du nok finde en eng. version.
Jeg tror det er den samme som jeg har fundet - jeg får også en fejl her når jeg forsøger at køre .exe filen. Jeg har dog prøvet at installere den på en andens computer og fandt en fil der hedder XLMACRO.CHM og der står en masse om excel 4 makroer i.
Skulle du få lyst til at se de ark jeg roder med, så er de begge tilgængelige på min hjemmeside www.hugopedersen.dk under TAXIfiler
Jeg er ikke sikker på at udviklerne af Excel havde alle de ting jeg gør med i tankerne da de planlagde udviklingen :-)
Normalt ville jeg have lavet sådan noget i Access, men da mange af mine 'kunder' kun har en standard Office på deres maskiner, så var jeg jo nødt til at lave noget til dem også.
bak> en af parametrene i den Excel4 makro er printkvalitet. Har du nogen ide om hvilke værdier den kan antage? Jeg synes ikke jeg har haft held med at finde det nogen steder. Jeg ville gerne kunne justere så nogen af udskrifterne kommer i draftkvalitet på en farveprinter. Det er hurtigere og billiger og resultatet er godt nok til det det skal bruges til.
Synes godt om
Ny brugerNybegynder
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.