• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zoeken en vervangen in 500 bestanden

Status
Niet open voor verdere reacties.

Josh2k4

Gebruiker
Lid geworden
13 aug 2015
Berichten
20
Hoi,
ik heb 500 CSV bestandjes waar een fout in staat (er staat "FGP ipv FGP)
Deze bestandje voor bestandje openen en de typefout zoeken/vervangen is zeer arbeidsintensief.

Is er een truukje om dit in één keer te doen?

Hoop op jullie hulp!

gr - Jos
 
Staan die bestandjes allemaal in dezelfde dir ?
Staat er geen ander bestand tussen met dezelfde extensie?
 
hoi cobbe.
ja ze staan allemaal bij elkaar in 1 map zonder andere files ertussen
 
Een code van snb doet dat voor u mits enkele aanpassingen.

Code:
Sub werkuithanden()
   c0 = "C:\"
   c1 = Dir(c0 & "*.xlsx")
   Do Until c1 = ""
      Workbooks.Add c0 & c1
      With ActiveWorkbook
        ------ zet hier de code van de aanpassingsmacro
        .SaveAs Replace(c0 & c1, ".xlsx", "001.xlsx")
        .Close False
      End With
      c1 = Dir
   Loop
End Sub

co & c1 = aanpassen aan situatie
xlsx -> CVS
 
of met

Code:
Sub M_snb()
  sn=filter(split(createobject("wscript.shell").exec("cmd /c Dir G:\OF\*.csv /b/s").stdout.readall,vbCrLf),".")
 
  with createobject("scripting.filesystemobject")
    for each it in sn
      .createtextfile(it).write replace(.opentextfile(it).readall,chr(34) & "FGP","FGP")
    next
  end with
End Sub

NB. Vervang "G:\OF\" door de directory waar de csv-bestanden staan.
 
Laatst bewerkt:
Hoi SNB,
dank voor de reactie.
Ik probeer jouw versie werkend te krijgen, ik heb in een nieuw excel bestand een macro gemaakt welke ik 'Replace' hebt genoemd


Code:
Sub Replace()
  sn = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir J:\Migratiebestanden\*.csv /b/s").stdout.readall, vbCrLf), ".")
 
  With CreateObject("scripting.filesystemobject")
  For Each it In sn
    .createtextfile(it).write Replace(.opentextfile(it).readall, Chr(34) & """FGP", "FGP")
  Next
End Sub

als ik deze macro draai dan krijg ik

Compileerfout

Onjuist aantal argumenten of ongeldige eigenschappentoewijzing


wat doe ik fout?
Kan het te maken hebben met het feit dat mijn 'zoek' tekst ook al een aanhalingsteken kent?

Alvast bedankt!

Jos
 
Hoi Cobbe,
dank voor je reactie.
Ik ben totaal niet bekend met dit soort codes dus nog een paar vraagjes:

c0 vul ik met mijn bestandslokatie --> J:\Migratiebestanden\
wat moet c1 zijn dan?

Met welke code kan ik "FGP vervangen met FGP?

Alvast bedankt

Jos
 
Geef je sub eens een andere naam. Replace is een bestaande functie binnen VBA
 
Buiten de opmerking van VenA over die gereserveerde naam denk ik dat je dit ook moet wijzigen:

"""FGP", in ""FGP""

en je 'End With' heb je ook verloren onderweg.

Mijn code komt ook van snb dus neem zijn voorstel maar over, is een complete code voor het doel dat jij voor ogen hebt.
 
Laatst bewerkt:
NB. Letterlijk (=ongewijzigd) gebruiken

Code:
Sub M_snb()
  sn=filter(split(createobject("wscript.shell").exec("cmd /c Dir J:\Migratiebestanden\*.csv /b/s").stdout.readall,vbCrLf),".")
 
  with createobject("scripting.filesystemobject")
    for each it in sn
      .createtextfile(it).write replace(.opentextfile(it).readall,chr(34) & "FGP","FGP")
    next
  end with
End Sub
 
Klopt dat ook voor dit : ' er staat "FGP ipv FGP '
 
beide dank voor jullie hulp!

De macro opent nu wel en er verschijnt (heel kort) een zwart venster, maar de bestandjes worden niet bijgewerkt.

Nog een ander idee?
 
Dan staat er in die bestandjes niet wat je erin zoekt.
Plaats eens zo'n bestandje hier.

Gebruik:

Code:
Sub M_snb()
  sn=filter(split(createobject("wscript.shell").exec("cmd /c Dir J:\Migratiebestanden\*.csv /b/s").stdout.readall,vbCrLf),".")
 
  with createobject("scripting.filesystemobject")
    for each it in sn
      c00=.opentextfile(it).readall
      msgbox c00
      msgbox instr(c00,chr(34) & "FGP"
      .createtextfile(it).write replace(.opentextfile(it).readall,chr(34) & "FGP","FGP")
    next
  end with
End Sub
 
dat lukte niet - 'bestandstype ongeldig' krijg ik als melding dan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan