Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Bestanden hernoemen  (gelezen 11238 keer)

0 leden en 1 gast bekijken dit topic.

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Bestanden hernoemen
« Gepost op: 17 november 2015, 12:47:47 »
Hallo,
vraag 1
ik heb 999 mapjes te beginnen bij 1, 2 , 3 enz. tot 999
Nu wil ik deze mapje hernoemd hebben naar 0001, 0002, 0003 enz tot 0999.
vraag 2
In deze mapjes zitten pfd files opgeslagen o.a. als 20150001-1. het nummer 20150001 wijzigt iedere keer maar -1 blijft bestaan. De waarde -1 heeft betrekking op het nummer van het mapje. Nu wil ik dat ook deze files wijzigen in de naam van het mapjes bv. 20150001-0001.
Het betreft in totaliteit ongeveer 20.000 bestandjes.
Handmatig ben ik hier maanden mee bezig.
Hoe kan dit gedaan worden via een VB prog.
Gr. Math


Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #1 Gepost op: 17 november 2015, 15:09:33 »
Hallo Math,

hiervoor zal wel kortere code kunnen geschreven worden, maar deze is eenvoudig en begrijpelijk.
Dat de code wat langer is vind ik geen obstakel, voornamelijk dat je deze code maar sporadisch  (of eenmalig) zal gebruiken.

Je kan kiezen, beide bewerkingen (1 en 2) samen uitvoeren, of een voor een.

Hier al een code op vraag 1 om de mappen van naam te wijzigen (voorwaarde is dat er ook 999 mappen in je hoofdmap staan)
De code vraagt je eenmaal om het pad waarin je mappen staan, vergeet de backslash niet op het einde.

Sub RenameFolder()
       
    Dim OldFolderName As String, NewFolderName As String
    Dim myValue As Variant
myValue = inputbox("Geef de naam op van de map, bvb C:\Test\")
For a = 1 To 9
    b = "000"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next
 For a = 10 To 99
    b = "00"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next
 For a = 100 To 999
    b = "0"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next

End Sub


Voor de PDF-bestanden kijk ik nog even...

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #2 Gepost op: 17 november 2015, 18:59:03 »
Hallo SoftAid,

op onderstaande regel loop het prog. vast Name oldfoldername As newfoldername, foutcode 53 "kan het bestand niet vinden.
Gr. Math

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #3 Gepost op: 17 november 2015, 19:10:07 »

op onderstaande regel loop het prog. vast Name oldfoldername As newfoldername, foutcode 53 "kan het bestand niet vinden.

Hallo Math,

mogelijk heb je geen 999 mapjes in je hoofdmap? Daarom schreef ik:

Citaat
(voorwaarde is dat er ook 999 mappen in je hoofdmap staan)
Anders moet je veiligheidscodes gaan inbouwen in je code.

In hoeverre zijn de mappen hernoemt in jou Verkenner?

:) SoftAid :)             




Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #4 Gepost op: 17 november 2015, 19:38:32 »
Hallo SoftAid,

In de hoofdmap zitten nu 1610 mapjes.
Er zijn nog geen wijzigingen aangebracht.
Haal de mappen vanaf 1000 uit de hoofdmap en laten het prog. lopen. Kijken wat gebeurt.

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #5 Gepost op: 17 november 2015, 20:07:38 »
Hallo SoftAid,

Jouw oplossing doet het perfect. Het hernoemen duurde 5 seconden.  :) Had fout gemaakt in directorie.  :-[

Hoe kun je het probleem oplossen als er toch een mapje ontbreekt ?

Math

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #6 Gepost op: 17 november 2015, 20:09:33 »

In de hoofdmap zitten nu 1610 mapjes.
Er zijn nog geen wijzigingen aangebracht.
Haal de mappen vanaf 1000 uit de hoofdmap en laten het prog. lopen. Kijken wat gebeurt.

Hallo Math,

je sprak in je eerste bericht van 999 mappen. Daarop is de macro gebaseerd. NIET op meer dan 999 mappen.

in het geval van meer dan 1000 mappen moet je een stukje code toevoegen, of de macro in zijn geheel veranderen naar:

Sub RenameFolder()
       
    Dim OldFolderName As String, NewFolderName As String
    Dim myValue As Variant
myValue = inputbox("Geef de naam op van de map, bvb C:\Test\")
For a = 1 To 9
    b = "000"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next
 For a = 10 To 99
    b = "00"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next
 For a = 100 To 999
    b = "0"
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next

For a = 1000 To 9999
    b = ""
    OldFolderName = myValue & a
    NewFolderName = myValue & b & a
    Name OldFolderName As NewFolderName
Next

End Sub

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #7 Gepost op: 17 november 2015, 20:15:43 »

Anders moet je veiligheidscodes gaan inbouwen in je code.

Hoe kun je het probleem oplossen als er toch een mapje ontbreekt ?

Je kan natuurlijk verschillende veiligheden gaan inbouwen in je macro, maar als deze maar voor eenmalig gebruik is, dan kan je ook net zo goed even manueel controleren.

 :) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #8 Gepost op: 17 november 2015, 20:26:45 »
SoftAid,

weet je ook hoe je uit een directorie (bv 0001) de bestanden kunt uitlezen ?

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: Bestanden hernoemen
« Reactie #9 Gepost op: 17 november 2015, 20:27:35 »
Citaat
Hoe kun je het probleem oplossen als er toch een mapje ontbreekt ?
zet bovenaan je for-next lussen
On error resume next
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: Bestanden hernoemen
« Reactie #10 Gepost op: 17 november 2015, 20:33:20 »
Ik heb dit onlangs eens  in excel gedaan omdat iemand dat wou (een lijst van bestandsnamen in een excellijst)
In Access zal de code gelijk zijn maar dan zal je't naar een tabel moeten wegschrijven.

Opgelet je moet wel in je VBA venster bij het menu Extra>>Verwijzigen>>Microsoft scripting runtime aanvinken


Citaat
Function BestandnamenInEenMapOphalen() As String()
    'Maak een FileDialog
    Dim fd As FileDialog
    'Instantieer en zet hem op op Folderpicker
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    'Zet de titel op KIES EEN MAP
    fd.Title = "Kies een map"
    'Toon hem
    fd.Show
    'Toon de geselecteerdemap
    'MsgBox fd.SelectedItems(1)
    Dim strGeselecteerdeMap As String
    strGeselecteerdeMap = fd.SelectedItems(1)
   
    'fso
    Dim fso As FileSystemObject
    'maak een folder
    Dim map As Folder
   
    'instantieer een nieuwe fso
    Set fso = New FileSystemObject
    'stel map in als de geselecteerde folder
    Set map = fso.GetFolder(strGeselecteerdeMap)
   
    'Loop nu de bestanden in deze map af
    'We gaan er van uit dat er niet meer dan 1000 bestanden in staan.
    Dim Namen(1000) As String
    Dim teller As Integer
    teller = 1
    For Each F In map.Files
        Namen(teller) = F.Name
        teller = teller + 1
    Next F
   
   
    BestandnamenInEenMapOphalen = Namen
   
End Function
Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #11 Gepost op: 17 november 2015, 22:39:03 »
Hallo Math,

ik zie nu pas je in het Access Board aan het posten bent  :-[. Ik dacht dat je dit in het Excel board had geplaatst  0:-)
Of dit verschil gaat maken in de code weet ik niet.

Ik heb iets uitgewerkt dat bij mij werkt. Voorwaarde is natuurlijk dat je mapjes 1, 2, 3 enzovoort heten.
Je mappen en bestanden worden gelijktijdig hernoemt.

De veiligheid van Dizzl  (on error resume next) heb ik niet ingebouwd.

Maak zeker een Backup van je hoofdmap voordat je gaat testen, want bij een verandering van de mappen werkt de macro niet meer.
als je dus eenmaal de macro uitvoert, met gedeeltelijk of geheel succes, moet je de macro er geen 2 de keer op los laten.
Dan moet je die bewerkte hoofdmap verwijderen, en een nieuwe kopie gebruiken om een test op te doen.

in bijlage het bestandje. De Macro weet je wel te starten in VBA.
PS: Hij loopt tot 9999 mappen. Daarboven moet de code aangepast worden.

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Bestanden hernoemen
« Reactie #12 Gepost op: 17 november 2015, 23:14:51 »

weet je ook hoe je uit een directorie (bv 0001) de bestanden kunt uitlezen ?

Die vraag vraagt om meer uitleg ;) ;D

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #13 Gepost op: 17 november 2015, 23:32:19 »
SoftAid,
ik zit in ACCES board
bedankt voor je hulp. Dizzl jij ook.

weet je ook hoe je uit een mapje (bv 0001) de bestanden kunt uitlezen IN ACCES?

Offline Math Reinders

  • Volledig lid
  • **
  • Berichten: 168
  • Geslacht: Man
  • Oplossing.be
Re: Bestanden hernoemen
« Reactie #14 Gepost op: 18 november 2015, 15:14:30 »
SoftAid,

weet je ook hoe je uit een directorie (bv 0001) de bestanden kunt uitlezen ?

ik zou dit willen koppelen aan het klantnummer zodat ik kan kijken welke PDF onder dit nummer zijn geplaatst.

 


www.combell.com