Avatar billede lars_u Juniormester
12. september 2013 - 18:08 Der er 9 kommentarer og
1 løsning

Tjek om fil er åben på netværk

Hej
Er det muligt at tjekke med vba?

Hvis fil ikke er åben:
Information:filen er ikke i brug, åbnes....
åben fil

Hvis fil er åben:
Information:Filen er i brug

Mvh. Lars
Avatar billede lars_u Juniormester
12. september 2013 - 18:11 #1
Ups glemte lige
Koden skal virke med Excel 2003(evt.også Excel 2007)
Lars
Avatar billede kabbak Professor
12. september 2013 - 18:37 #2
prøv at lege med dette, er ikke testet

Public Sub TjekFil()
Dim Fil As String

  Fil = "C:\Mappe1.xls"
If GetAttr(Fil) = vbReadOnly Then
MsgBox "Filen " & Fil & " er skrivebeskyttet"
Else
MsgBox "Filen " & Fil & " er IKKE skrivebeskyttet"
End If


End Sub
Avatar billede jens48 Ekspert
13. september 2013 - 00:04 #3
Denne kode virker hos mig.

Option Explicit
Sub Sample()
    Dim Ret
    Ret = IsWorkBookOpen("Sti og navn indsættes her")
    If Ret = True Then
        MsgBox "Filen er i brug"
    Else
    MsgBox ("Filen åbnes")
Application.Workbooks.Open ("Sti og navn indsættes her")
    End If
End Sub
Function IsWorkBookOpen(FileName As String)
    Dim ff As Long, ErrNo As Long
    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #ff
    Close ff
    ErrNo = Err
    On Error GoTo 0
    Select Case ErrNo
    Case 0:    IsWorkBookOpen = False
    Case 70:  IsWorkBookOpen = True
    Case Else: Error ErrNo
    End Select
End Function
Avatar billede lars_u Juniormester
14. september 2013 - 11:18 #4
Hej igen
Tak for imput,har prøvet din kode Jens den virker.
Mit problem:
hvis jeg åbner min fil, lukker den uden at ha' indtastet nyt
Dialogboks:
skal ændringerne i D:\Dokumenter\Test.xls'gemmes

Hvordan finder jeg ud af hvilke ændringer der er fortaget?
Thisworkbook:

Option Explicit
  Sub Sample()
  Dim Ret
  Ret = IsWorkBookOpen("D:\Dokumenter\Test.xls")
  If Ret = True Then
  MsgBox "Filen er i brug"
  Else
  Application.Workbooks.Open ("D:\Dokumenter\Test.xls")
  End If
  End Sub
Function IsWorkBookOpen(FileName As String)
  Dim ff As Long, ErrNo As Long
  On Error Resume Next
  ff = FreeFile()
  Open FileName For Input Lock Read As #ff
  Close ff
  ErrNo = Err
  On Error GoTo 0
  Select Case ErrNo
  Case 0:    IsWorkBookOpen = False
  Case 70:  IsWorkBookOpen = True
  Case Else: Error ErrNo
  End Select
  End Function

Private Sub Workbook_Open()
  Application.ScreenUpdating = False
  Range("D301").Select
  Sheets("ark1").Select
  ActiveWindow.ScrollRow = 1
  ActiveWindow.ScrollColumn = 1
callsub: workbookopen
  Application.ScreenUpdating = True
  End Sub

Module1
Sub workbookopen()
Password = "xxx"
    ActiveWorkbook.Unprotect Password
    Password = "xxx"
    ActiveWorkbook.Protect Password, Structure:=True, Windows:=True
End Sub

Hvis jeg sletter thisworkbook koder får jeg stadig
skal ændringerne i D:\Dokumenter\Test.xls'gemmes
Hvordan finder jeg ud af hvilke ændringer der er fortaget?

Lars Fatsvag
Avatar billede lars_u Juniormester
14. september 2013 - 19:59 #5
Hej igen
har fundet svaret(ændringer)
http://support.microsoft.com/kb/274500/en-us

Er det muligt at tilføje dette til koden fra Jens:
IsWorkBookOpen = False Then
Range("CE4") = 1
IsWorkBookOpen = true Then
Range("CE4") = 2
Vil bruge det til at lave betingetformateringer der tydeligt viser om arket er skrivebeskyttet.
mvh
Lars
Avatar billede jens48 Ekspert
15. september 2013 - 19:53 #6
Idet jeg får ud fra at der skal skrives i det oprindelige dokument og ikke i det der åbnes, kommer makroen f.eks. til at se sådan ud:

Option Explicit
Sub Sample()
    Dim Ret
    Ret = IsWorkBookOpen("D:\dokumenter\test.xls")
    If Ret = True Then
    Range("CE4") = 2
        MsgBox "Filen er i brug"
       
    Else
    Range("CE4") = 1
    MsgBox ("Filen åbnes")
Application.Workbooks.Open ("D:\dokumenter\test.xls")
    End If
End Sub
Function IsWorkBookOpen(FileName As String)
    Dim ff As Long, ErrNo As Long
    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #ff
    Close ff
    ErrNo = Err
    On Error GoTo 0
    Select Case ErrNo
    Case 0:    IsWorkBookOpen = False
    Case 70:  IsWorkBookOpen = True
    Case Else: Error ErrNo
    End Select
End Function
Avatar billede lars_u Juniormester
16. september 2013 - 19:47 #7
Hej igen
Jeg fatter ikke koden...
Hvis jeg flytter filen fra den angivne sti("D:\dokumenter\test.xls")
så åbner filen?

åbner jeg filen test.xls
manuelt kører makroen:Thisworkbook.sample
MsgBox "File not found"

Hvor skal koderne placeres?
ThisWoorkbook(her står mine,det er vel fejlen)
module
andet
MsgBox "File not found",skal vel komme når jeg åbner filen
(den er jo ikke på den angivne sti.)
mvh.
Lars
Avatar billede jens48 Ekspert
18. september 2013 - 21:28 #8
Hvis du flytter filen fra den angivne sti virker makroen ikke. Du skal lægge makroen under ThisWorkbook.
Jeg tror du blander flere forskellige makroer sammen. Der er intet i min makro der skriver en MsgBox med "File not found"
Avatar billede lars_u Juniormester
10. november 2013 - 09:08 #9
Hej
Bedre sent end aldrig, excel giver automatisk besked hvis filen er åben(uden VBA kode).
smid svar for point
Lars
Avatar billede jens48 Ekspert
11. november 2013 - 00:34 #10
du får et svar
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