Avatar billede egmose Novice
09. juni 2015 - 12:54 Der er 5 kommentarer og
1 løsning

Omdøbe filer ved hjælp af data fra excel

Hej

nogen der kender en løsning, f.eks. ved hjælp af bat eller noget software, til at omdøbe mange filer?

Jeg har filnavnet i excel kollonne a, og det nye i kolonne b?

Alle filerne ligger i samme mappe
Avatar billede cht22 Professor
09. juni 2015 - 13:07 #1
Ja du kan lave en vbs fil og dette kan læse fra excel.

Option Explicit
Dim objApp, objWbs, objWorkbook, objSheet

Set objApp = CreateObject("Excel.Application")
Set objWbs = objApp.WorkBooks
objApp.Visible = False
Set objWorkbook = objWbs.Open("[path to spreadsheet file]")
Set objSheet = objWorkbook.Sheets("Sheet1")

'Hvis der er mere end 9999 filer må du lige rette tallet.

For i = 1 to 9999

valuea = objSheet.Range("A"&i).Value
valueb = objSheet.Range("B"&i).Value

if valuea = "" then Exit For

folderpath = "c:\sourcefolder\"

Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile folderpath&valuea, folderpath&valueb

Next
'MsgBox objSheet.Range("C5").Value

objWorkbook.Close False
objWbs.Close
objApp.Quit

Set objSheet = Nothing
Set objWorkbook = Nothing
Set objWbs = Nothing
Set objApp = Nothing

MsgBox "Done"
Avatar billede supertekst Ekspert
09. juni 2015 - 14:01 #2
Avatar billede egmose Novice
09. juni 2015 - 16:31 #3
Hej cht22

Jeg har forsøgt at tilpasse den men får fejlen:

Linje: 12
Tegn: 1

Variablen er ikke defineret: ´i´

Her er koden:
Option Explicit
Dim objApp, objWbs, objWorkbook, objSheet

Set objApp = CreateObject("Excel.Application")
Set objWbs = objApp.WorkBooks
objApp.Visible = False
Set objWorkbook = objWbs.Open("C:\Users\mr.KONGEAA\Desktop\omdøb\mappe3.xlsx")
Set objSheet = objWorkbook.Sheets("Ark1")

'Hvis der er mere end 9999 filer må du lige rette tallet.

For i = 1 to 9999

valuea = objSheet.Range("A"&i).Value
valueb = objSheet.Range("B"&i).Value

if valuea = "" then Exit For

folderpath = "c:\sourcefolder\"

Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile folderpath&valuea, folderpath&valueb

Next
'MsgBox objSheet.Range("C5").Value

objWorkbook.Close False
objWbs.Close
objApp.Quit

Set objSheet = Nothing
Set objWorkbook = Nothing
Set objWbs = Nothing
Set objApp = Nothing

MsgBox "Done"
Avatar billede cht22 Professor
09. juni 2015 - 21:07 #4
Du kan bare slette linjen med Option Explicit, så behøver man ikke definere alle variabler, som gjort ved nogle af variablerne ved brug af dim.
Avatar billede AnyFellow Mester
10. juni 2015 - 08:24 #5
Hvis det er en enkelt gang du skal lave dette, ville jeg nok bruge c-kolonnen til at danne en linje du kan fyre af i en batch-fil:

="RENAME "&A1&" "&B1"

Du kopierer så linjen ned igennem dit regneark.

Du kopierer så alle linjer i c-kolonnen i en batch-fil, som du lægger i samme mappe som filerne.

Start batch-filen og alle filer er omdøbt.
Avatar billede egmose Novice
03. august 2015 - 16:57 #6
fik ikke noget af det til at virke :(

Takker for forsøget
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