Gemme pdf i undermappe som ligger under tilfældig mappe
Jeg skal gemme pdf i en mappe med navn fra celle B3. eks.(55100) mappen som har samme navn som B3 ligger allerede i en tilfældig mappe som ligger under D:\documenter\ mappen kan ligge i kunde1 eller kunde2 osv. eks: jeg skal gemme pdf i mappen der hedder "55100" som ligger i mappen D:\documenter\?\55100. samtidig vil jeg gerne oprette 2 under mapper med henholdsvis navn fra celle B4 og B5. Eks: D:\documenter\?\55100\B4\B5\ Håber i kan hjælpe.
Sub Gem_certifikat()
Dim PDFfile As Range For Each PDFfile In ActiveSheet.Range("B6") If PDFfile.Value <> "" Then FileCopy Range("B7") & PDFfile.Value, "D:\Document\" & PDFfile.Value End If Next Range("B6").ClearContents MsgBox "certifikat er gemt"
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
27. oktober 2020 - 10:39#1
Du kan gennemløbe "D:\Document\" med dir() og for hver, også med dir(), for hvilke fundet der har længde: len(dir("D:\Document\" & fundet & "\55100")) - det indikerer at 55100 er mappe i fundet.
Da dir() ikke kan parameterisere anvendelsen af flere buffere, eller med andre ord kun har en buffer, kan den ikke anvendes 'inden i hinanden' programflowmæssigt - fordi så ville inderste anvendelse overskrive yderste. Derfor skal alle mappenavne under dokumenter gemmes i et array som så gennemløbes for at finde hvilken der indeholder f.eks.55100
Jeg er ikke helt med på hvad du mener. kan du skære det lidt mere ud i pap for mig?
Synes godt om
Slettet bruger
28. oktober 2020 - 00:45#3
Det er blot et tip om at anvende dir() til at finde ? i D:\documenter\?\55100 jeg omtaler.
pathWithEnding("D:\","documenter\","55100")
kunne f.eks returnere
D:\documenter\kunde1\55100
givet
Function pathWithEnding(containingDir, startDir, endDir) Dim documents, folder push documents, Dir(containingDir & startDir & "*.*", vbDirectory) Do push documents, Dir() Loop While Len(documents(UBound(documents))) For Each folder In documents pathWithEnding = containingDir & startDir & folder & "\" & endDir 'Debug.Print pathWithEnding If folder <> "." And folder <> ".." Then If Len(Dir(pathWithEnding, vbDirectory)) Then Exit Function Next pathWithEnding = Empty ''not found End Function
Sub push(V, i) If IsEmpty(V) Then V = Array() ReDim Preserve V(UBound(V) + 1) If IsObject(i) Then Set V(UBound(V)) = i Else V(UBound(V)) = i End Sub
jeg har stadig lidt problemer med at sætte koden rigtig sammen. kan du hjælpe?
Sub find_folder() ans = pathWithEnding(containingDir, startDir, endDir) End Sub Function pathWithEnding(containingDir, startDir, endDir)
Dim documents, folder push documents, Dir("D:\", "document\", "55100" & "*.*", vbDirectory) Do push documents, Dir() Loop While Len(documents(UBound(documents))) For Each folder In documents pathWithEnding = containingDir & startDir & folder & "\" & endDir 'Debug.Print pathWithEnding If folder <> "." And folder <> ".." Then If Len(Dir(pathWithEnding, vbDirectory)) Then Exit Function Next pathWithEnding = Empty ''not found End Function
Sub push(V, i) If IsEmpty(V) Then V = Array() ReDim Preserve V(UBound(V) + 1) If IsObject(i) Then Set V(UBound(V)) = i Else V(UBound(V)) = i End Sub
Synes godt om
Slettet bruger
28. oktober 2020 - 12:25#5
Hej igen Man kan slet ikke skrive som du gør med:
Sub find_folder() ans = pathWithEnding(containingDir, startDir, endDir) End Sub
da containingDir, startDir, endDir er parametre navne som i deres stavede form bliver variabler i funktionen pathWithEnding. Der eksisterer ingen værdier i find_folder der hedder (= er variable) containingDir, startDir eller endDir. Det giver kompileringsfejl - hvis du som, man bør anvender option explicit som indholdet i første linie i modulet. (ellers er det blot 3 empty værdier)
du skal bruge faktiske værdier som i #3, linie 4, konstanter, celle referencer eller andre udtryk.
Det er fuldstændig sort snak for mig da jeg ikke er så skrap til kodning.
Kan jeg ikke få dig til at skrive hele koden som du mener den skal se ud?
Synes godt om
Slettet bruger
28. oktober 2020 - 16:53#7
Hvis f.eks celle b3 indeholder navnet på en mappe som ligger i en mappe som liggger i d:\documenter og celle b7 er navnet på en pdf fil uden path - alså som i "minpd.pdf", så vil
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.