Avatar billede hugopedersen Nybegynder
18. januar 2004 - 14:54 Der 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 )
Avatar billede kabbak Professor
18. januar 2004 - 15:21 #1
du kan speede den lidt op ved at sætte
Application.ScreenUpdating = False
og til slut

Application.ScreenUpdating = True
Avatar billede hugopedersen Nybegynder
18. januar 2004 - 15:59 #2
Det står lidt længere oppe i koden.

Det tager ca. 70 sek. at køre koden på de 8 sheets der er i min workbook !
Avatar billede bak Forsker
18. januar 2004 - 17:13 #3
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
   
      Select Case bytType
        Case conTaxa
          RightFooter = "&R TAXAmeter afregning"
          Orientation = xlPortrait                                'Print portrait
          LeftMargin = "1" 'Application.InchesToPoints(1)
        Case conCash
          RightFooter = "Kontantafregning"
          Orientation = xlPortrait                                'Print portrait
          LeftMargin = "1" 'Application.InchesToPoints(1)
        Case conDrivers
          RightFooter = "Chaufførliste"
          Orientation = xlLandscape                                'Print landscape
          LeftMargin = "0.5" 'Application.InchesToPoints(0.5)
        Case conYear
          RightFooter = "Årsopgørelse"
          Orientation = xlPortrait                                'Print portrait
          LeftMargin = "1" 'Application.InchesTocentimeters(1)
        Case Else
          RightFooter = ""
          Orientation = xlPortrait                                'Print portrait
          LeftMargin = "1" 'Application.InchesToPoints(1)
      End Select
      EntireFooter = """" & LeftFooter & RightFooter & """"
     
      psetup = "PAGE.SETUP(""""," & EntireFooter & "," & LeftMargin & "," & RightMargin & ","
      psetup = psetup & TopMargin & "," & BottomMargin & ",,,,," & Orientation & "," & PaperSize
      psetup = psetup & ",,,,True)"
      Debug.Print psetup
      Application.ExecuteExcel4Macro psetup
  Next ws
Avatar billede bak Forsker
18. januar 2004 - 17:17 #4
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


Jeg har kun rettet TAXAmeter afregning
Avatar billede bak Forsker
18. januar 2004 - 17:43 #5
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))
Avatar billede hugopedersen Nybegynder
18. januar 2004 - 20:39 #6
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.
Avatar billede bak Forsker
18. januar 2004 - 20:55 #7
Hvordan gør du så nu ?
Avatar billede hugopedersen Nybegynder
18. januar 2004 - 21:21 #8
Jeg tester lige lidt senere på aftenen og vender tilbage
Avatar billede kabbak Professor
18. januar 2004 - 21:26 #9
hvad med at sætte den herind, og så bruge ActiveSheet.Name til at styre hvilken side det er.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Så opdaterer den kun når der skal udskrives
Avatar billede hugopedersen Nybegynder
19. januar 2004 - 07:30 #10
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
Avatar billede hugopedersen Nybegynder
19. januar 2004 - 07:33 #11
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.
Avatar billede bak Forsker
19. januar 2004 - 08:01 #12
Ja, det sidste argument skal stå til False, for at farver skrives ud.
Jeg havde sat den til true, da min printer er en ældre laserprinter

psetup = "PAGE.SETUP(""""," & EntireFooter & "," & LeftMargin & "," & RightMargin & ","
      psetup = psetup & TopMargin & "," & BottomMargin & ",,,,," & Orientation & "," & PaperSize
      psetup = psetup & ",,,,False)"
Avatar billede hugopedersen Nybegynder
19. januar 2004 - 08:28 #13
OK - det må jeg bare lige have ændret.
Avatar billede hugopedersen Nybegynder
04. januar 2005 - 16:26 #14
bak>  ved du om man kan pille i de parametre til PAGE.SETUP så den laver en 'Fit to page'
Avatar billede bak Forsker
04. januar 2005 - 17:06 #15
Parameteren Skala% sættes til TRUE
Avatar billede bak Forsker
04. januar 2005 - 17:26 #16
psetup = "PAGE.SETUP(""""," & EntireFooter & "," & LeftMargin & "," & RightMargin & ","
psetup = psetup & TopMargin & "," & BottomMargin & ",,,,," & Orientation & "," & PaperSize
psetup = psetup & ",True,,,True)"
Avatar billede bak Forsker
04. januar 2005 - 17:27 #17
en sjælden gang er det godt at have en xl4-manual :-)
Avatar billede hugopedersen Nybegynder
05. januar 2005 - 06:59 #18
Det havde jeg aldrig gættet at Skale% kunne antage værdien True :-)
(men det vil jeg da prøve når jeg kommer hjem i aften)

Den manual den findes vel ikke som PDF :-)
Avatar billede bak Forsker
05. januar 2005 - 20:06 #19
Nej da,den er jo fra sidste årtusinde, men hjælpen til XL-4 macroer er til fri download ved MS.
Avatar billede hugopedersen Nybegynder
06. januar 2005 - 08:10 #20
Jeg kan desværre kun finde en fil der kræver at du har Office 2000 på maskinen - og det kan jeg ikke klare :-)
Avatar billede bak Forsker
08. januar 2005 - 10:02 #21
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.

http://www.microsoft.com/downloads/details.aspx?FamilyID=C09BF7F7-D30E-4CE9-8930-5D03748CA5CD&displaylang=da
Avatar billede hugopedersen Nybegynder
09. januar 2005 - 17:02 #22
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
Avatar billede bak Forsker
09. januar 2005 - 23:24 #23
Har kigget. dyb respekt......flot kodning
Avatar billede hugopedersen Nybegynder
10. januar 2005 - 07:51 #24
Tak for roserne :-)

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å.
Avatar billede hugopedersen Nybegynder
12. februar 2005 - 12:27 #25
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.
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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