Avatar billede rasmus1234 Nybegynder
20. oktober 2004 - 10:42 Der er 21 kommentarer og
1 løsning

kan jeg sætte en dos funktion i gang?

Jeg har i en lang kolonne en masse filnavne, i alt 7000 af slagsen:
H:\foto1.jpg
H:\foto22.jpg
H:\foto31.jpg
H:\foto455.jpg

Jeg vil gerne have disse kopieret over i en ny mappe, altså H:\Katalog\

Kan jeg samsætte en lang sætning med "copy H:\foto1.jpg to H:\Katalog\"  Altså en slags dos-sætning.

Forslag modtages meget gerne...
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 10:47 #1
DU kan godt lave en FIlCopy i VBA! Meen... jeg ved kun lige hvordan man kopier bestemte filer... det vil sige at man skal navngive dem ALLESAMMEN!
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 10:48 #2
MkDir ("C:\TEMP")
Shell ("xcopy C:\*.* C:\TEMP")
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 10:49 #3
Så kopier den ALLE filerne der ligger i C:\ til et ny oprettet bibliotek C:\TEMP

Du skal evt bruge:

Shell ("xcopy H:\*.* H:\Katalog")
Avatar billede bredan1977 Nybegynder
20. oktober 2004 - 10:50 #4
Det skal selvfølgelig oprettes som en VBA kode... med evt en knap der kører den!
Avatar billede rasmus1234 Nybegynder
20. oktober 2004 - 10:54 #5
Tak for Jeres svar - der er lige den detalje, at H:\ indeholder 10.000 filer og det er kun 7.000 af dem jeg vil have kopieret. Altså dem, som jeg har udvalgt i Excel efter import med noget VBA (som jeg selvfølgelig fik hjælp til via Eksperten :-))
Avatar billede jkrons Professor
20. oktober 2004 - 11:19 #6
Hvordan har du udvalgt dem? Er det kun de udvalgte, der er vist i Excel?
Avatar billede rasmus1234 Nybegynder
20. oktober 2004 - 11:24 #7
ja, det er kun de udvalgte jeg har stående i en lang kolonne.
Avatar billede jkrons Professor
20. oktober 2004 - 11:39 #8
Så må du kunne bruge en foreach..next løkke til at hente filnavnene.
Avatar billede rasmus1234 Nybegynder
20. oktober 2004 - 11:45 #9
jkrons, vil du ikke være rar at uddybe - jeg kender næsten intet til VBA.
Avatar billede jkrons Professor
20. oktober 2004 - 12:28 #10
Undskyld, jeg var lige gået et øjeblik :-)

Prøv med noget i denen stil:

Sub kopier()
    Dim Navn As String
    Set fs = CreateObject("Scripting.FileSystemObject")

    For Each c In ActiveSheet.Range("a1:a3").Cells
        Navn = c.Value
        Debug.Print Navn
        fs.CopyFile Navn, "c:\jon\"
    Next c
   
End Sub

Ret stien, der skal kopieres til, til den ønskede sti. Prøv evt. med et mindre antal filer først. Med 7.000 filer kan det tage en del tid :-)
Avatar billede jkrons Professor
20. oktober 2004 - 12:29 #11
Du skal selvfølgelig også rette området, dine navne står i.
Avatar billede rasmus1234 Nybegynder
20. oktober 2004 - 12:31 #12
jeg tester det lige i eftermiddag, jeg krydser fingre...
Avatar billede jkrons Professor
20. oktober 2004 - 12:31 #13
Helt i orden :-)
Avatar billede jkrons Professor
20. oktober 2004 - 12:33 #14
Og slet lige Debug.Print Navn (den skule kun være der mens jeg testede ;-))
Avatar billede rasmus1234 Nybegynder
21. oktober 2004 - 08:29 #15
DET VIRKER UPÅKLAGELIGT, TAKKER...JKRONS LÆG ET SVAR
Avatar billede jkrons Professor
22. oktober 2004 - 00:34 #16
Velbekomme :-)
Avatar billede rasmus1234 Nybegynder
23. oktober 2004 - 18:49 #17
Hvis jeg ønsker at Flytte filerne ISTEDET for at Kopiere dem...hedder det så MoveFile
Avatar billede jkrons Professor
23. oktober 2004 - 23:57 #18
Js!
Avatar billede rasmus1234 Nybegynder
04. november 2004 - 15:32 #19
Det er noget i vejen med dette
- den virker ikke på I:\#FOTO - KATALOG\1\
- men den virker på I:\#FOTO - KATALOG\

Ligger der en begrænsning i VBA'en:

Sub VisFiler()
Dim FSO As Object
Dim Dir As Object
Dim Fil As Object
Dim i As Long
Dim sti As String
MsgBox "Dette er meget meget simpelt, med en beskeden indsats kunne programmet blive helt pænt med kanpper og andet gejl ;o)"
sti = InputBox("Indtast sti til folder (f.eks. 'I:\#Foto - scanigros\1\'", "Indtast sti", "I:\#Foto - scanigros\1\")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = FSO.GetFolder(sti)
Set Fil = Dir.Files
i = 1
Cells(i, 1).Formula = "Filnavn"
Cells(i, 2).Formula = "Filstørrelse (byte)"
Cells(i, 3).Formula = "Fil oprettet dato"
For Each Fil In Dir.Files
  i = i + 1
  Cells(i, 1).Formula = Fil.Name
  Cells(i, 2).Formula = Fil.Size
  Cells(i, 3).Formula = Fil.DateCreated
Next Fil
End Sub
Avatar billede rasmus1234 Nybegynder
04. november 2004 - 15:32 #20
Skal jeg oprette et nyt spørgsmål?
Avatar billede jkrons Professor
04. november 2004 - 16:35 #21
Du beh'øbver ikke atr oprette et nyt spørgsmål. Jeg kigger lige på det og vender tilbage, men jeg har desværre ikke tid før i morgen.
Avatar billede rasmus1234 Nybegynder
04. november 2004 - 17:19 #22
OK, det lyder rigtigt godt.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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