Avatar billede webcon Nybegynder
15. september 2003 - 15:32 Der er 10 kommentarer og
2 løsninger

Attrib i Word-dokument

Hvorledes kan jeg få listet en true eller false mht. om et worddokument er skrivebeskyttet ??

/webcon
Avatar billede martin_moth Mester
15. september 2003 - 19:08 #1
Du kan f.eks. bruge FSO (File Scripting Object)

1) Nyt Project
2) Project > References > MicroSoft Scripting Runtime
3) Kode:

Dim FSO As FileSystemObject
Dim MyFolder As Folder
Dim MyFile As File

Set FSO = New FileSystemObject
Set MyFolder = FSO.GetFolder("C:\")

For Each MyFile In MyFolder.Files
  If MyFile.Attributes = ReadOnly Then
    MsgBox "Filen " & MyFile.Name & " er Readonly"
  End If
Next

Set MyFolder = Nothing
Set FSO = Nothing
Avatar billede sjh Nybegynder
16. september 2003 - 00:25 #2
ja eller:


Option Explicit

Private Sub Form_Load()
Dim strPath As String

  strPath = "C:\dokument.doc"

  If GetAttr(strPath) = vbReadOnly + vbArchive Or _
    GetAttr(strPath) = vbReadOnly Then
    MsgBox "Filen er skrivebeskyttet."
      Else
    MsgBox "Filen er ikke skrivebeskyttet."
  End If
End Sub
Avatar billede martin_moth Mester
16. september 2003 - 13:33 #3
shj: Hvorfor egentligt

  If vbReadOnly + vbArchive Or GetAttr(strPath) = vbReadOnly Then ...?

Hvorfor ikke bare

  If GetAttr(strPath) = vbReadOnly Then

Ellers må jeg indrømme, at din løsning nok er lidt smartere end min, med mindre webcon har andet at bruge FSO til, nu har har oprettet objektet :o)
Avatar billede sjh Nybegynder
16. september 2003 - 13:39 #4
hvis en file er arkiv kan den jo også være skrivebeskyttet ;)
Avatar billede sjh Nybegynder
16. september 2003 - 14:18 #5
man kan også gøre sådan.. ;)


'----------------------------------- Form1 -----------------------------------
Option Explicit

Private Const INVALID_HANDLE_VALUE = -1

Private Declare Function GetFileAttributes Lib "kernel32" _
                        Alias "GetFileAttributesA" ( _
                        ByVal lpFileName As String) As Long

' vbNormal    0  Normal (default for Dir and SetAttr)
' vbReadOnly  1  Read-only
' vbHidden    2  Hidden
' vbSystem    4  System file
' vbVolume    8  Volume label
' vbDirectory 16  Directory or folder
' vbArchive  32  File has changed since last backup

Private Sub Form_Load()
Dim strPath As String
Dim lngRet As Long
  strPath = "C:\filenavn.xxx"
 
  lngRet = GetFileAttributes(strPath)
  If lngRet <> INVALID_HANDLE_VALUE Then
    Select Case lngRet
          Case 1, 3, 5, 33, 35, 37
            ' vbReadOnly = 1
            ' vbReadOnly + vbHidden = 3
            ' vbReadOnly + vbSystem = 5
            ' vbReadOnly + vbArchive = 33
            ' vbReadOnly + vbArchive + vbHidden = 35
            ' vbReadOnly + vbArchive + vbSystem = 37
            MsgBox "Filen er skrivebeskyttet."
          Case Else
            MsgBox "Filen er ikke skrivebeskyttet."
    End Select
      Else
    MsgBox "Kan ikke finde filen."
  End If
End Sub
'----------------------------------- Form1 -----------------------------------
Avatar billede martin_moth Mester
16. september 2003 - 17:17 #6
"hvis en file er arkiv kan den jo også være skrivebeskyttet ;)"

Ja - det kan den også hvis den er skjult, er en systemfil osv. Det jeg mener er, om "If GetAttr(strPath) = vbReadOnly" ikke er tilstrækkeligt til at bestemme om en fil er skrivebeskyttet?
Avatar billede webcon Nybegynder
16. september 2003 - 23:42 #7
Jeg takker foreløbigt for Jeres svar, men kan desværre først afprøve det på arbejdet i morgen. Jeg skal nok vende tilbage a.s.a.p.

/webcon
Avatar billede webcon Nybegynder
17. september 2003 - 14:40 #8
I er ikke glemt. Jeg har bare ikke haft tid til at teste endnu, så der går lige et par dage.
Avatar billede martin_moth Mester
17. september 2003 - 18:04 #9
Et par dage??? Hvor lang tid tager det at copy/paste (he he)
Brug du blot den tid du skal :o)
Avatar billede sjh Nybegynder
19. september 2003 - 04:48 #10
martin_moth < Nej det kommer jo an på hvad din file er, den kan jo være flere ting på en gang.

se nu på vadierne her under:

' vbReadOnly = 1
' vbReadOnly + vbHidden = 3
' vbReadOnly + vbSystem = 5
' vbReadOnly + vbArchive = 33
' vbReadOnly + vbArchive + vbHidden = 35
' vbReadOnly + vbArchive + vbSystem = 37

GetAttr() vil retuner det tal som passer til filen. ;)
Avatar billede martin_moth Mester
19. september 2003 - 08:07 #11
sjh:

Ja, men det jeg ikke forstod var hvorfor du i første omgang så kun tog "vbReadOnly + vbArchive" og "vbReadOnly" med, men ikke fx. "vbReadOnly + vbArchive + vbHidden" osv...

Ligemeget, tror alle fatter poienten nu, selv mig ;o)
Avatar billede webcon Nybegynder
22. september 2003 - 22:34 #12
Jeg skal starte med at beklage at jeg først nu vender tilbage, men har været udenbyes nogle dage.

Mange tak for Jeres gode forslag. Det er så absolut noget jeg kan bruge til noget kreativt... takker
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