Avatar billede JP9 Juniormester
28. oktober 2014 - 15:56 Der er 9 kommentarer og
1 løsning

Excel VBA Tjek om regnearket allerede er åbent

Opgave:

Jeg har indsat en knap i et ark som først åbner et nyt regneark, ved hjælp af: Application.workbooks.open("sti til ark") uden problemer.
Derefter kopiers en række data ind i arket.

Min opgave er nu følgende: Hvis personen igen aktivere knappen, skal regnearket tjekke om regnearket til indlæsning allerede er åbent.

Jeg har forsøgt med:

Set wBook = Workbooks("Personal.xls")

og et par andre, men får error 9 subscript out of range

hvad gør jeg forkert, er desværre ikke den store VBA-haj.

På forhånd tak for hjælpen
Avatar billede store-morten Ekspert
28. oktober 2014 - 17:27 #2
Prøv:

Sub testÅben()

    Dim TestWorkbook As Workbook

    Set TestWorkbook = Nothing
    On Error Resume Next
    '("Personal.xls") <-- tilrettes
    Set TestWorkbook = Workbooks("Personal.xls")
    On Error GoTo 0

    If TestWorkbook Is Nothing Then
        MsgBox "Filen er ikke åben!"
    Else
        MsgBox "Filen er åben!"
    End If
   
End Sub
Avatar billede JP9 Juniormester
29. oktober 2014 - 08:16 #3
Hej Store-Morten

Tak for løsningen.
Men den er desværre prøvet og virker af en eller anden årsag ikke. (se koden nedenstående)

Som du kan se har jeg for at tjekke stien, prøvet at åbne arket med samme sti efter din kode. Det virker fint.

Har du et godt forslag, til en anden løsning?

Sub testÅben()

    Dim TestWorkbook As Workbook

    Set TestWorkbook = Nothing
    On Error Resume Next
    '("Personal.xls") <-- tilrettes
    Set TestWorkbook = Workbooks("Q:\DK Servicecenter\Indkøb\Indkøb\00 DK\JPE\Diverse\Fordelingsnøgle\Bestordre.xls")

    On Error GoTo 0

    If TestWorkbook Is Nothing Then
        MsgBox "Filen er ikke åben!"
    Else
        MsgBox "Filen er åben!"
    End If
   
Application.Workbooks.Open ("Q:\DK Servicecenter\Indkøb\Indkøb\00 DK\JPE\Diverse\Fordelingsnøgle\Bestordre.xls")
   
 
End Sub
Avatar billede store-morten Ekspert
31. oktober 2014 - 19:56 #4
Tjek om Personal.xls er rigtig

Excel 2010 er det:
Personal.xlsx og Personal.xlsm hvis der er makro i.
Avatar billede JP9 Juniormester
31. oktober 2014 - 20:32 #5
Hej Store-Morten

.xls er det korrekte der er tale om en ældre version af Excel, jeg formorder heller ikke stien under din kode vil virke hvis filformatet var forkert.

Det går galt li linien som starter med Set testWorkbook = .......

Kan bare ikke finde ud af hvorfor?
Avatar billede store-morten Ekspert
31. oktober 2014 - 20:43 #6
Prøv at lægge begge filer i samme mappe
Avatar billede store-morten Ekspert
31. oktober 2014 - 20:56 #7
Prøv denne version:
Sub test()
    Dim objWork As Workbook
    On Error Resume Next
        Application.Workbooks("Bestordre.xls").Activate
    If Err.Number <> 0 Then
   
          MsgBox "Filen er ikke åben!"
    Else
          MsgBox "Filen er åben!"
    End If
   
End Sub
Avatar billede JP9 Juniormester
03. november 2014 - 14:22 #8
Hej Store-Morten

Super godt det virker, smid et svar!

Bonus spørgsmål: Kender du en måde at komme uden om "on error resume next", da det interferer lidt med min allere oprettede fejlkontrol i den resterende kode.
Avatar billede JP9 Juniormester
03. november 2014 - 14:56 #9
Glem bonus spørgsmålet - løsning fundet ;-)
Avatar billede store-morten Ekspert
03. november 2014 - 15:02 #10
Velbekomme
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