Avatar billede denero Juniormester
02. maj 2008 - 10:31 Der er 23 kommentarer og
2 løsninger

Mens makroen kører

Jeg har en makro, som henter oplysninger i andre filer, hvilket tager lidt tid. I stedet for at skærmen står og "blinker" under afviklingen af koden, ville jeg gerne have et timeglas eller en "bjælke" og så lidt ro på billedet. Hvordan sætter jeg det ind i min makro?
Avatar billede denero Juniormester
02. maj 2008 - 10:32 #1
Det er primært i word jeg arbejder, men vil også gerne have det lavet i excel.
Avatar billede be_nice Juniormester
02. maj 2008 - 12:12 #2
Start/slut dine makroer med:
Application.ScreenUpdating = False
Application.ScreenUpdating = True
/Be_Nice
Avatar billede supertekst Ekspert
02. maj 2008 - 14:20 #3
Timeglas:    Application.Cursor = xlWait
Normal:      Application.Cursor = xlDefault
Avatar billede rvm Nybegynder
02. maj 2008 - 20:35 #4
"Application.ScreenUpdating = False" virker kun korrekt i Excel. I Word vil skærmen stadig blinke i mange tilfælde. Hvis du vil have en helt roligt billede skal du gøre følgende:

Indsæt nedenstående i toppen af et kodemodul:
Declare Function LockWindowUpdate Lib "user32" _
      (ByVal hwndLock As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
      (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long

og brug så denne kode dine makroer, når skærmen ikke skal opdateres:

Dim hwnd As String
hwnd = FindWindow("OpusApp", 0&)
LockWindowUpdate (hwnd)

og brug denne kode, når skærmopdateringen skal aktiveres igen:

LockWindowUpdate (0&)
Avatar billede denero Juniormester
06. maj 2008 - 08:20 #5
Undskyld den lange ventetid: be_nice, supertekst og rvm - har været forhindret
Vedr. svar fra rvm.
Hvordan gør jeg helt eksakt:

Sub denero_kode()
'
minkode
'
End sub
Avatar billede rvm Nybegynder
06. maj 2008 - 08:40 #6
'Helt i toppen af modulet
Declare Function LockWindowUpdate Lib "user32" _
      (ByVal hwndLock As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
      (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long

Sub denero_kode()
Dim hwnd As String

'Skærmopdatering deaktiveres
hwnd = FindWindow("OpusApp", 0&)
LockWindowUpdate (hwnd)

minkode
'

'Skærmpdatering aktiveres
LockWindowUpdate (0&)

End sub
Avatar billede denero Juniormester
06. maj 2008 - 09:46 #7
Hvis jeg sætter den i toppen af modulet - springer den op til næste makro. Er jeg helt galt på den. Har vist noget at lære.
Avatar billede rvm Nybegynder
06. maj 2008 - 10:42 #8
Du skal stille kursoren helt i toppen af kodemodulet og så indsætte nedenstående:

'Helt i toppen af modulet
Declare Function LockWindowUpdate Lib "user32" _
      (ByVal hwndLock As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
      (ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
Avatar billede denero Juniormester
06. maj 2008 - 11:03 #9
Fint - nu virker det, men skærmen viser stadig, hvad der sker i de filer, jeg opdaterer fra...sortering osv, men altså kun fra disse. Kan jeg også undgå dette.

Sub Sidstenotat()
hwnd = FindWindow("OpusApp", 0&)
LockWindowUpdate (hwnd)

'
' Åbnwordfilsidstenotat Makro
'
    ChangeFileOpenDirectory _
        "K:\POM-Back\Stationer\Kontrolmappe, Stationer\Skemaer til kontrolmappe\"
    Documents.Open FileName:= _
        """xxRapporterings- og opfølgningsskema.doc""", _
        ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
        wdOpenFormatAuto, XMLTransform:=""
'
' Hentesidstenotat Makro
'
    Selection.Sort ExcludeHeader:=False, FieldNumber:="Kolonne 2", _
        SortFieldType:=wdSortFieldDate, SortOrder:=wdSortOrderDescending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderDescending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdDanish, SubFieldNumber:="Afsnit", SubFieldNumber2:="Afsnit" _
        , SubFieldNumber3:="Afsnit"
    Selection.MoveLeft Unit:=wdCharacter, Count:=3
    Selection.SelectCell
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Copy
'
' LUKwordfilsidstenotat Makro
'

'
    ActiveDocument.Close SaveChanges:=False

herefter bliver data skrevet i den fil, hvor skærmbilledet først bliver opdateret til sidst. Der hentes fra 9 forskellige filer, så processen gentages.
Avatar billede rvm Nybegynder
06. maj 2008 - 12:00 #10
Du kan åbne filen skjult:

dim navnpåfil as string

navnpåfil = "K:\POM-Back\Stationer\Kontrolmappe, Stationer\Skemaer til kontrolmappe\xxRapporterings- og opfølgningsskema.doc"

Documents.Open navnpåfil, Visible:=False
Avatar billede denero Juniormester
06. maj 2008 - 12:45 #11
øh--kan du vise, hvor i koden jeg sendte, at den skal være.
Avatar billede rvm Nybegynder
06. maj 2008 - 13:07 #12
Sub Sidstenotat()
dim navnpåfil as string

hwnd = FindWindow("OpusApp", 0&)
LockWindowUpdate (hwnd)

'
' Åbnwordfilsidstenotat Makro
'
navnpåfil = "K:\POM-Back\Stationer\Kontrolmappe, Stationer\Skemaer til kontrolmappe\xxRapporterings- og opfølgningsskema.doc"

Documents.Open navnpåfil, Visible:=False
'
' Hentesidstenotat Makro
'
    Selection.Sort ExcludeHeader:=False, FieldNumber:="Kolonne 2", _
        SortFieldType:=wdSortFieldDate, SortOrder:=wdSortOrderDescending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderDescending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdDanish, SubFieldNumber:="Afsnit", SubFieldNumber2:="Afsnit" _
        , SubFieldNumber3:="Afsnit"
    Selection.MoveLeft Unit:=wdCharacter, Count:=3
    Selection.SelectCell
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Copy
'
' LUKwordfilsidstenotat Makro
'

'
    ActiveDocument.Close SaveChanges:=False
Avatar billede denero Juniormester
06. maj 2008 - 13:49 #13
Jeg får flg. fejlmelding: Run-time error'9125':Den overførte streng kan ikke analyseres.Hvis jeg sætter visible = True, kører det fint, men ....
Avatar billede rvm Nybegynder
06. maj 2008 - 14:12 #14
er det "Documents.Open", der fejler?
Avatar billede denero Juniormester
06. maj 2008 - 14:26 #15
??Det ved jeg ikke, hvad mener du. Ved at ændre vible til true fra false kan den læse ind i doc.
Avatar billede denero Juniormester
06. maj 2008 - 14:27 #16
ikke vible men visible
Avatar billede rvm Nybegynder
06. maj 2008 - 14:39 #17
hvis du har kodevinduet åbent, når du kører koden, og vælger debug, når den fejler, så kan du se hvilken linie den fejler på.
Avatar billede denero Juniormester
06. maj 2008 - 17:39 #18
Dette er markeret med gult når man trykker på debug:

  Selection.Sort ExcludeHeader:=False, FieldNumber:="Kolonne 2", _
        SortFieldType:=wdSortFieldDate, SortOrder:=wdSortOrderDescending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderDescending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdDanish, SubFieldNumber:="Afsnit", SubFieldNumber2:="Afsnit" _
        , SubFieldNumber3:="Afsnit"
Avatar billede rvm Nybegynder
06. maj 2008 - 18:32 #19
Prøv nedenstående:

Documents.Open navnpåfil, Visible:=False
Documents(navnpåfil).Activate

Selection.Sort ExcludeHeader:=False, FieldNumber:="Kolonne 2", _
        SortFieldType:=wdSortFieldDate, SortOrder:=wdSortOrderDescending, _
        FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderDescending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByCommas, SortColumn:=False, CaseSensitive:=False, _
        LanguageID:=wdDanish, SubFieldNumber:="Afsnit", SubFieldNumber2:="Afsnit" _
        , SubFieldNumber3:="Afsnit"
Avatar billede denero Juniormester
06. maj 2008 - 22:26 #20
En sidste kommentar

Tak for kampen - det virker perfekt. Når jeg kigger op over indlægene, synes jeg dog at mine 30 point er lidt "billigt". Er det muligt at tildele jer yderligere point.
Avatar billede denero Juniormester
06. maj 2008 - 23:16 #21
hmm..lidt underligt. Når jeg åbner dokumentet, som der indlæses i, opdaterer den skærmen løbende, men kun når makroen bliver kørt første gang
Avatar billede rvm Nybegynder
07. maj 2008 - 08:51 #22
Det kan godt være det er lidt "billigt", men så er der andre spørgsmål, der har været lidt "dyre", så mon ikke det går op i enden :-)

Angående din sidste kommentar, så lyder det mærkeligt - er du sikker på den ikke kører en anden kode?
Avatar billede denero Juniormester
07. maj 2008 - 15:59 #23
Det tror jeg ikke at der gør.
Hvis jeg "sætter" en dialogboks ind i OPEN-makroen, kan der efterfølgende indlæses uden, at der opdateres skærm før end til sidst?? Hvis der samme sted kun køres en makro uden dialogboks, bliver der efterfølgende opdateret skærm under indlæsning.
Avatar billede rvm Nybegynder
07. maj 2008 - 18:45 #24
Prøv at sende filerne til mig - så kan jeg bedre se hvad der er galt (rvm(snabel a)heaven punktum dk)
Avatar billede denero Juniormester
13. maj 2008 - 13:06 #25
Har lavet fordeling af point, men fik ikke noget svar på om, der kunne gives yderligere point.
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
Tag et kursus i Word og øg effektiviteten

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