Avatar billede rvm Nybegynder
17. juni 2008 - 22:16 Der er 3 kommentarer og
1 løsning

VBA Åbne xls fil skjult

Hej

Jeg er i gang med at optimere min kode til et projekt.
Koden går ud på at jeg åbner en xls fil og henter data derfra.
Jeg bruger i øjeblikket nedenstående kode, men syntes den går for langsom:

Set xlapp = New Excel.Application
xlapp.Application.Workbooks.Open FileName:=strdataFil, ReadOnly:=True, Password:="Password"

Hvis jeg fjerner New fra første linie går det meget hurtigere, men så ser jeg arket blive åbnet på min Taskbar, hvilket ikke er så kønt.

Er der mon en metode til at åbne regnearket skjult uden at skulle bruge ovenstående kode?
Avatar billede rvm Nybegynder
17. juni 2008 - 22:17 #1
Jeg glemte lige at skrive at det hele forgår i Excel
Avatar billede supertekst Ekspert
17. juni 2008 - 23:01 #2
Ja - uddrag af andet "system":
...
dim xlsFil2
...
Private Sub åbnFil2()
    Set xlsFil2 = CreateObject("Excel.Application")
    With xlsFil2
        .Workbooks.Open sti + "fil2.xls"
'        .Visible = True                'hvis det skal være synlig umder test
    End With
End Sub
Private Sub lukFil2()
    xlsFil2.Application.DisplayAlerts = False
    xlsFil2.Save
   
    xlsFil2.Application.Quit
    Set xlsFil2 = Nothing
End Sub
Avatar billede rvm Nybegynder
17. juni 2008 - 23:30 #3
Der er vel ingen forskel på
  Set xlapp = New Excel.Application
og
  Set xlsFil2 = CreateObject("Excel.Application")

De starter begge en ny application og er derfor lige langsomme.

I min test tog det cirka 3 sekunder for begge, mens det tager omkring 1 sekund, hvis jeg bare åbner et regneark almindeligt uden at lave et objekt først. det teger 2 sekunder hvis jeg ikke bruger "New", men så kan jeg se regnearket åbne sig i taskbaren.
Avatar billede rvm Nybegynder
18. juni 2008 - 17:12 #4
Jeg fandt ud af, at jeg ændre opsætningen, så Excel ikke viser flere filer på proceslinien - på den måde hold den op med at vise filen der bliver åbnet:

Ved åbning af masterfilen:
    If Application.ShowWindowsInTaskbar = True Then
        Application.ShowWindowsInTaskbar = False
        bolShowWindowsInTaskbar = True
    End If

Ved hændelsen før luk sætter jeg opsætningen til hvad den var ved åbning:
    If bolShowWindowsInTaskbar = True Then
        Application.ShowWindowsInTaskbar = True
    End If
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