Avatar billede skrepee Nybegynder
26. maj 2006 - 10:35 Der er 3 kommentarer

hvis-funktion og opdatering af dokumentkæder

Hej Eksperter

På min arbejdsplads har jeg i Excel lavet et "genvejsark" hvor jeg har lavet knapper til alle de funktioner som vi anvender mest. Det sparer meget på tiden eftersom vores forskellige regneark er placeret i et stort virvar på vores fælles-drev.  Jeg vil dog gerne gøre brugerfladen lidt bedre eftersom jeg er den eneste der forstår mig bare en lille smule på VBA. De problemer jeg gerne vil have løst er flg.:

-  hvis man trykker på en knap der åbner et regneark som man allerede har åbent i forvejen kommer end/debug dialogen frem - hvordan undgår jeg det?

Vi har et ark som samler op på nogle underark som vi bruger løbende. Opsamlingsarket indeholder kæder til underarkene og kan opdateres på normal vis via makro:

ActiveWorkbook.UpdateLink Name:="O:\akp\EXCEL\bord\akp.xls", Type:= _
        xlExcelLinks
    ActiveWorkbook.UpdateLink Name:="O:\akp\EXCEL\bord\dahl.xls", Type:= _
        xlExcelLinks
ETC.

Et problem her er, at jeg gerne vil lave en makro der opdaterer kæderne i hovedarket, men at den melder fejl hvis man har et af underarkene åbent på sin egen computer. Det jeg gerne vil er at lave en hvis-funktion der undersøger om man har 1 ud af 6 dokumentnavne åben, og i så fald, lukker og gemmer det pågældende dokument så der kan opdateres, hvorefter det bliver åbnet igen. Hvordan vil hvis-funktionen komme til at se ud? Altså bare linjen der afgør om et dokument er åbent eller lukket.
Avatar billede excelent Ekspert
26. maj 2006 - 21:20 #1
checker om "Bike.xls" er åben - hvis ja luk og gem ændring
blot et eks. så kan du nok rette den til dit formål

Sub test()

On Error Resume Next
   
    If CBool(Len(Workbooks("Bike").Name) > 0) = False Then
      [a1] = "nej"
      Else
      [a1] = "ja"
    End If
   
    If [a1] = "ja" Then
      Workbooks("Bike.xls").Close savechanges:=True
    End If
   
End Sub
Avatar billede kabbak Professor
26. maj 2006 - 23:56 #2
Jeg ville nok gøre sådan, men ikke testet, måske skal der en pause ind for at den kan nå at gemme.

Sub test()

' For fil1
    If Not WB_Loaded("akp.xls") Then
        ActiveWorkbook.UpdateLink Name:="O:\akp\EXCEL\bord\akp.xls", Type:=xlExcelLinks
    Else
        Workbooks("akp.xls").Close savechanges:=True
        ' måske en pause ind her
        ActiveWorkbook.UpdateLink Name:="O:\akp\EXCEL\bord\akp.xls", Type:=xlExcelLinks
        Workbooks.Open "O:\akp\EXCEL\bord\akp.xls"
    End If

' det samme igen bare med De forskellige Workbooks navne

End Sub


Public Function WB_Loaded(WB) As Boolean
    Dim W As Workbook
    For Each W In Workbooks
        If W.Name = WB Then
            WB_Loaded = True
            Exit Function
        End If
    Next W
    WB_Loaded = False
End Function
Avatar billede excelent Ekspert
25. juni 2006 - 16:01 #3
*
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
Kurser inden for grundlæggende programmering

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