15. maj 2016 - 21:25Der er
8 kommentarer og 1 løsning
Ændre fil navne
Hej Eksperter
Jeg er ret ny til C#, og ønsker lidt hjælp til følgende:
- Jeg har en Excel listet op med navne i kolonne A - Jeg har en mappe med en række pdf'er
Ønsket er at pdf'erne skal ændre navn fra nuværende til det navn der står i Excel. Første PDF (i mappen er sorteret efter ændrings dato) skal hedde navnet fra Excel "A1"
Fint - det havde jeg også regnet med. Sådan ser VBA-koden ud, som jeg i min udgave har placeret under Ark 1. Anvender Ark2 til at udføre sortering ifl. ændringsdato
Option Explicit
Const mappeMedPdfNavn = "Arkiv" '<<< ------- kan ajourføres Dim mappeNavn As String Dim fs, f, fc, antalFiler As Integer, ræk As Integer
Dim antalRækker As Integer Public Sub renamePDF() houseKeeping traverserPdfMappe End Sub Private Sub houseKeeping() antalRækker = Cells(Rows.Count, "A").End(xlUp).Row mappeNavn = ActiveWorkbook.Path & "\" & mappeMedPdfNavn End Sub Private Sub traverserPdfMappe() Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(mappeNavn) antalFiler = f.Files.Count ræk = 1
Rem Opbyg data til sortering, slet først gl. data ActiveWorkbook.Sheets(2).Select Selection.ClearContents
For Each fc In f.Files With ActiveWorkbook.Sheets(2) .Range("A" & ræk) = fc.Name .Range("B" & ræk) = fc.datelastmodified End With ræk = ræk + 1 Next fc
sorterPdfEfterÆndringsdato
renameFiler
MsgBox antalFiler & " FilNavne ændret" End Sub Private Sub sorterPdfEfterÆndringsdato() ActiveWorkbook.Worksheets("Ark2").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark2").Sort.SortFields.Add Key:=Range("B1:B" & antalRækker), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark2").Sort .SetRange Range("A1:B" & antalRækker) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub Private Sub renameFiler() Dim ræk As Integer, ptFilnavn As String, nytFilnavn As String Dim oldName As String, newName As String For ræk = 1 To antalRækker ptFilnavn = ActiveSheet.Range("A" & ræk) nytFilnavn = ActiveWorkbook.Sheets(1).Range("A" & ræk) & ".pdf"
oldName = mappeNavn & "\" & ptFilnavn: newName = mappeNavn & "\" & nytFilnavn Name oldName As newName Next ræk End Sub
Det var simpelthen lige præcis hvad jeg havde brug for:D Mange tusind tak for det :)
Du skulle vel tilfældigvis ikke lige have en linje til at markere sidste celle i aktive kolonne? lige som her: Range("A" & Cells.Rows.Count).End(xlUp).Select Men hvor "A" skal gælde for den aktive cellekolonne. :)
Den ser ud til at gøre det korrekt ja. Jeg mangler bare lige her til sidst at den aktivere den celle, lige som min anden kode gjorde (dog kun i kolonne "A").
Synes godt om
Ny brugerNybegynder
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.