Avatar billede hnto Nybegynder
30. april 2003 - 12:16 Der er 7 kommentarer og
1 løsning

VBA i access 97

jeg har flg. script jeg gerne vil have til også at kigge i underbiblioteker til det definerede hovedbibliotek D:\billeder\SZ4\

Hvad skal da ændres i scriptet ?

Function kopier()
Dim db As Database
Dim rs As DAO.Recordset
Dim n As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("table1", dbOpenSnapshot)
rs.MoveLast
rs.MoveFirst
For n = 1 To rs.RecordCount
  If Dir("D:\billeder\SZ4\" & rs![field1]) <> "" Then
    FileCopy "D:\Billeder\SZ4\" & rs![field1], "D:\billeder_ok\SZ4\" & rs![field1]
  End If
rs.MoveNext
Next n
rs.Close
Set rs = Nothing
db.Close
End Function
Avatar billede sjap Praktikant
30. april 2003 - 13:04 #1
Du er nødt til først at lægge foldernavnene ind i et array:

Dim StartFolder as String
Dim StartFolder as String
Dim FolderNavn(1 to 100) as String
Dim I as Integer

StartFolder = "D:\billeder\SZ4\"
Folder = Dir(StartFolder, vbDirectory)
I = 0
Do While Folder <> ""   
    ' Ignorer det aktuelle bibliotek og det overordnede bibliotek.
    If Folder <> "." And Folder <> ".." Then
        ' Brug bitvis sammenligning til at sikre, at Folder er et bibliotek.
        If (GetAttr(StartFolder & Folder) And vbDirectory) = vbDirectory Then
            I=I 1
            FolderNavn(I) = Folder
        End If
    End If
    Folder = Dir    ' Hent næste folder
Loop

Og så kan du så køre resten af dit program. Du kan ikke lægge dit program ind i denne løkke, da den vil forstyrre brugen af dir-sætningen.
Avatar billede hnto Nybegynder
30. april 2003 - 14:57 #2
hvordan ser det så ud samlet på en folder hedder :

D:\billeder\SZ4\
D:\billeder\SZ4\test1\
D:\billeder\SZ4\test2\

hvor billederne ønskes samlet i én resulterende folder som hedder D:\billeder_godkendte\
Avatar billede sjap Praktikant
30. april 2003 - 15:55 #3
Jeg har prøvet mit bedste. Det er lidt uoverskueligt et det her lille vindue på Eksperten. Om ikke andet så håber jeg du kan bruge det som inspiration.

Function kopier()
Dim db As Database
Dim rs As DAO.Recordset
Dim n As Long
Dim StartFolder as String
Dim FolderNavn(1 to 100) As String
Dim I As Integer
Dim FolderAntal As Integer

StartFolder = "D:\billeder\SZ4\"
Folder = Dir(StartFolder, vbDirectory)
I = 0
Do While Folder <> ""   
    If Folder <> ".." Then  ' Ignorer det overordnede bibliotek.
        If (GetAttr(StartFolder & Folder) And vbDirectory) = vbDirectory Then
            I=I+1
            FolderNavn(I) = Folder
        End If
    End If
    Folder = Dir    ' Hent næste folder
Loop
FolderAntal=I

Set db = CurrentDb
Set rs = db.OpenRecordset("table1", dbOpenSnapshot)
rs.MoveLast
For I= 1 to FolderAntal
    rs.MoveFirst
    For n = 1 To rs.RecordCount
        If Dir(FolderNavn(I) & rs![field1]) <> "" Then
            FileCopy FolderNavn(I) & rs![field1], "D:\billeder_ok\SZ4\" & rs![field1]
        End If
        rs.MoveNext
    Next n
Next I

rs.Close
Set rs = Nothing
db.Close
End Function
Avatar billede hnto Nybegynder
30. april 2003 - 18:14 #4
jeg accepterer og tester senere da jeg ikke når de de næste par dage.
Jeg vender tilbage uanset hvad således du har en status.

Takker foreløbig.
Avatar billede sjap Praktikant
30. april 2003 - 18:52 #5
OK - og tak for orienteringen (den er det mange der glemmer).  ;-)
Avatar billede hnto Nybegynder
11. maj 2003 - 21:54 #6
Jeg har ændret nogle stier i DIR referencen, men når scriptet køres kopieres der aldrig en fil ?!?...

Det er som om den ikke kan finde ud af det med foldernavn\filnavn

nogle hurtige ideer??
Avatar billede hnto Nybegynder
11. maj 2003 - 21:55 #7
ups .. her er scriptet..

Function kopier()
Dim db As Database
Dim rs As DAO.Recordset
Dim n As Long
Dim StartFolder As String
Dim Folder As String
Dim FolderNavn(1 To 1000) As String
Dim I As Integer
Dim FolderAntal As Integer

StartFolder = "D:\billeder\"
Folder = Dir(StartFolder, vbDirectory)
I = 0
Do While Folder <> ""
    If Folder <> ".." Then  ' Ignorer det overordnede bibliotek.
        If (GetAttr(StartFolder & Folder) And vbDirectory) = vbDirectory Then
            I = I + 1
            FolderNavn(I) = Folder
        End If
    End If
    Folder = Dir    ' Hent næste folder
Loop
FolderAntal = I

Set db = CurrentDb
Set rs = db.OpenRecordset("table1", dbOpenSnapshot)
rs.MoveLast
For I = 1 To FolderAntal
    rs.MoveFirst
    For n = 1 To rs.RecordCount
        If Dir(FolderNavn(I) & rs![Name]) <> "" Then
            FileCopy "FolderNavn(I)" & rs![Name], "D:\total\" & rs![Name]
        End If
        rs.MoveNext
    Next n
Next I

rs.Close
Set rs = Nothing
db.Close
End Function
Avatar billede hnto Nybegynder
12. maj 2003 - 18:09 #8
Jeg har valgt at spørge påny i dette

http://www.eksperten.dk/spm/351685
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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