Avatar billede Bumle Mester
04. maj 2017 - 04:58 Der er 23 kommentarer

Vba if workbook is open then

Hej derude,

Jeg er stødt I et lille problem.
Jeg har denne sub som kører på bestemte tidspunkter:

Sub slet_ark()

    Call Mail_macro_slet_ark_er_startet
   
   
    Workbooks.Open Filename:= _
        "https://blablabla.xlsm" _
        , UpdateLinks:=3
   
    Range("B5:C8").Select
    Selection.ClearContents
   
    ActiveWorkbook.Save
    ActiveWindow.Close

Workbooks.Open Filename:= _
        "https://blablabla1.xlsm" _
        , UpdateLinks:=3
   
    Range("B5:C8").Select
    Selection.ClearContents
   
    ActiveWorkbook.Save
    ActiveWindow.Close


Problemet er, at når excel filen er åben I forvejen, så vil jeg gerne have, at den går videre til den næste excel fil, osv osv
Men som det er nu, så stopper min macro, hvis en af de forskellige excel filer er åbne I forvejen.

Håber, at der er lidt ekspert hjælp at hente herinde :-)
På forhånd tak.
Avatar billede store-morten Ekspert
04. maj 2017 - 05:37 #2
Sub test()
    Dim objWork As Workbook
    On Error Resume Next
        Application.Workbooks("blablabla.xlsm").Activate
    If Err.Number <> 0 Then
   
          MsgBox "Filen er ikke åben!"
    Else
          MsgBox "Filen er åben!"
    End If
   
End Sub
Avatar billede Bumle Mester
04. maj 2017 - 08:45 #3
Hej igen,

Sidder desværre ikke lige ved min egen pc lige nu, men forstået rigtig så vil den vel se sådan ud:

Sub slet_ark()
Dim objWork As Workbook

Call Mail_macro_slet_ark_er_startet

Workbooks.Open Filename:= _
        "https://blablabla.xlsm" _
        , UpdateLinks:=3

    On Error Resume Next
    Application.Workbooks("blablabla.xlsm").Activate
    If Err.Number <> 0 Then
   
    Range("B5:C8").Select
    Selection.ClearContents
 
    ActiveWorkbook.Save
    ActiveWindow.Close
         
    Else
         
          ActiveWorkbook.Close SaveChanges:=False
         
          End If
 
 
  Workbooks.Open Filename:= _
        "https://blablabla1.xlsm" _
        , UpdateLinks:=3

    On Error Resume Next
    Application.Workbooks("blablabla1.xlsm").Activate
    If Err.Number <> 0 Then
   
    Range("B5:C8").Select
    Selection.ClearContents
 
    ActiveWorkbook.Save
    ActiveWindow.Close
         
    Else
         
          ActiveWorkbook.Close SaveChanges:=False
         
          End If
End Sub
Avatar billede Jan Hansen Ekspert
04. maj 2017 - 08:58 #4
On Error Resume Next
    'her tester du om filen er åben
    Application.Workbooks("blablabla.xlsm").Activate
    If Err.Number <> 0 Then 'Nedenstående sker hvis filen ikke er åben
   
Workbooks.Open Filename:= _
        "https://blablabla.xlsm" _
        , UpdateLinks:=3

    Range("B5:C8").Select
    Selection.ClearContents
 
    ActiveWorkbook.Save
    ActiveWindow.Close
         
    Else
          ' Du ville jo springe over hvis filen er åben så intet her
    End If
Avatar billede Bumle Mester
04. maj 2017 - 08:59 #5
Hovsa, mener selvfølgelig omvendt ved før og efter else :-)
Avatar billede store-morten Ekspert
04. maj 2017 - 15:44 #6
Ikke testet:
Sub slet_ark()
    Call Mail_macro_slet_ark_er_startet
    Call Test_åben_blablabla
End sub

Sub Test_åben_blablabla()
    Dim objWork As Workbook
    On Error Resume Next
        Application.Workbooks("blablabla.xlsm").Activate
    If Err.Number <> 0 Then   
          Call Slet_Ark_blablabla
    Else
          Call Test_åben_blablabla1
    End If   
End Sub
   
Sub Slet_Ark_blablabla()   
    Workbooks.Open Filename:= _
        "https://blablabla.xlsm" _
        , UpdateLinks:=3
   
    Range("B5:C8").Select
    Selection.ClearContents
   
    ActiveWorkbook.Save
    ActiveWindow.Close

    Call Test_åben_blablabla1
End sub

Sub Test_åben_blablabla1()
    Dim objWork As Workbook
    On Error Resume Next
        Application.Workbooks("blablabla1.xlsm").Activate
    If Err.Number <> 0 Then   
          Call Slet_Ark_blablabla1
    Else
         
    End If   
End Sub

Sub Slet_Ark_blablabla1()

Workbooks.Open Filename:= _
        "https://blablabla1.xlsm" _
        , UpdateLinks:=3
   
    Range("B5:C8").Select
    Selection.ClearContents
   
    ActiveWorkbook.Save
    ActiveWindow.Close
End sub
Avatar billede Bumle Mester
04. maj 2017 - 16:25 #7
Ah, de forskellige subs skal kaldes inden jeg lukker hver enkelt sub.
Tror faktisk, at det løser en anden udfordring som jeg står med.
Får lige tjekket i morgen, men mon ikke det virker?
Tak til begge indtil videre og jeg melder tilbage i morgen.
Avatar billede Bumle Mester
08. maj 2017 - 17:42 #8
Hmm, det virkede desværre ikke, da den stadig stopper hvis filen er optaget.
Avatar billede Jan Hansen Ekspert
08. maj 2017 - 18:10 #9
Prøv at køre macroen trinvis så du ved hvor den stopper/ hvor det går galt.
Avatar billede Bumle Mester
08. maj 2017 - 19:21 #10
Hej Jan,
Macroen fejler som sådan ikke og det er yders sjældent, at andre er logget ind på det tidspunkt, hvor min macro kører.
Problemet er jo, at macroen ikke kan redigere i arket, hvis der er andre brugere som har det åben til redigering på Sharepoint.
Så popper der jo et vindue op, som fortæller at arket er tjekket ind af en anden bruger.
Der vil jeg så gerne have min macro til, at køre videre til næste handling.
Avatar billede Jan Hansen Ekspert
08. maj 2017 - 19:33 #11
rigtig, du kan vel lave en test hvor det er åbent? hvis du så kører trinvis kan du se err.number og tilpasse så err.number hvor den stopper så springes handlingen der stopper macroen over
Avatar billede Bumle Mester
11. maj 2017 - 07:32 #12
Den melder ikke fejl i makroen, men stopper bare og excel fortæller, at filen allerede er i brug.
Hmm... er lidt lost her.
Hvis jeg kører Mortens sub, så virker det når stien til filen ligger lokalt på C, men ikke når jeg ændrer stien til server adressen.
Avatar billede Jan Hansen Ekspert
11. maj 2017 - 07:43 #13
Pass
Avatar billede Bumle Mester
11. maj 2017 - 07:59 #14
Helt ok, men tak for hjælpen alligevel.
Roder lidt med, at de forskellige WB skal checke ind af sig selv, hvis de har været inaktive i noget tid.
Så burde det kunne løse problemet.
Avatar billede store-morten Ekspert
11. maj 2017 - 15:44 #15
Min Sub tjekker om filen er åben på den pc som den køres fra.
Avatar billede Bumle Mester
11. maj 2017 - 17:30 #16
Ja, men filen som jeg åbner ligger jo på workspace, så der virker jo ikke.
Eller er der noget som jeg har misforstået her?
Avatar billede Bumle Mester
11. maj 2017 - 17:31 #17
Mener et workspace på sharepoint server.
Avatar billede store-morten Ekspert
11. maj 2017 - 20:24 #18
Har søgt og søgt på nettet :-)

Jeg tror din kode fejler når Workbooks.Open spørger om du vil åbne filen skrivebeskyttet? (Når en anden bruger har den åben)

Test nedenstånde kode,
åbner "blablabla" uden at spørge om du vil åbne filen skrivebeskyttet
og tester derefter for dette.

Sub Åben_og_Test_om_Skrivebeskyttet()

  Workbooks.Open Filename:= _
        "https://blablabla.xlsm" _
        , UpdateLinks:=3 _
        , IgnoreReadOnlyRecommended:=True

If Application.Workbooks("blablabla.xlsm").ReadOnly = True Then
    MsgBox ("Skrivebeskyttet")
        Else
    MsgBox ("Ok")
End If

End Sub

Hvis den virker, skal MsgBox ("Skrivebeskyttet") udskiftes med: "spring til næste"
Og MsgBox ("Ok") udskiftes med: "Slet"
Avatar billede Bumle Mester
11. maj 2017 - 20:46 #19
Tror desværre, at jeg har prøvet den også, da jeg selv har søgt helt vildt :-)
Men jeg giver det da lige et skud i morgen tidlig og melder tilbage.
Tak for din store hjælpsomhed igen-igen :-)
Avatar billede Bumle Mester
11. maj 2017 - 20:48 #20
Nej, jeg har faktisk ikke prøvet med IgnoreReadOnly, så du har måske ramt plet.
Jeg håber og krydser.
Avatar billede Bumle Mester
11. maj 2017 - 20:59 #21
Men skal den egentlig ikke ligge i den fil, som jeg vil åbne?
Tænker, at IgnoreReadOnlyRecommended, skal ligge som workbook open i den aktuelle fil, således at den generelt ikke spørger, når den åbnes og kun er read only.
Eller...
Avatar billede store-morten Ekspert
11. maj 2017 - 22:12 #22
Ja, den skal ligge i den fil der: Åbner, sletter og gemmer/lukker.

Trikket skulle så være at hvis den er i brug, åbnes den skrivebeskytte
(så kan den ikke gemmes)
Springes over og lukkes uden at gemme
Går videre med næste.
Avatar billede Bumle Mester
23. maj 2017 - 21:05 #23
Hmm, har rodet lidt med det, men kunne simpelthen ikke få det til, at spille.
Vores kære IT afdeling har dog lavet en auto tjek ind nu, så det løser jo problemet.
Men sidder nu alligevel her og ærger mig over, at jeg ikke kunne løse det.
Men tak for alle jeres forsøg på, at hjælpe mig.
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