probleem met VBA code ?

Status
Niet open voor verdere reacties.

jan excel

Gebruiker
Lid geworden
4 mrt 2007
Berichten
437
Hallo,

Onderstaande code heb ik via dit forum gekregen (snb en rebmog).

Code:
 If Dir("C:\test\data_barsttest.csv") <> "" Then Kill "C:\test\data_barsttest.csv"

   Shell "cmd /c copy C:\csv\*.csv C:\test\data_barsttest.csv", 0
   Do
     DoEvents
   Loop Until Dir("C:\test\data_barsttest.csv") <> ""

   Do
     DoEvents
   Loop Until FileLen("C:\test\data_barsttest.csv") > 0

   Kill "C:\CSV\*.csv"

Deze code dient alle bestanden met extensie csv om te zetten naar bestand data_barsttest.csv.
Echter de code loopt steeds bij de regel Kill "C:\CSV\*.csv" vast maar verwijdert wel elke keer 3 regels met extensie csv.
Zodra er nog maar twee regels over zijn maakt het de procedure af.

Wie weet hoe dit kan ??

Omdat ik de vorige topic op opgelost heb gezet, heb ik een nieuwe aangemaakt.

groet,
Jan E
 
Hoe zit het met de schrijfrechten ?

Wijzig de naam van de folder eens; bijv. C:\weg\ en pas de macro daarop aan.

Het gebruik van 'csv' als foldernaam zou tot verwarring kunnen leiden.
 
Laatst bewerkt:
Hoi snb,

Bedankt voor je reactie.
Wat raar is als ik onderstaand script run, dat wel alles wordt verwijderd.

Sub test()
kill "C:\csv\*.csv"
End Sub

Met folder "weg" maak geen verschil , zelfde probleem.

groet,
Jan
 
Hoi Alphamax,

Bedankt voor je reactie, ik gebruik excel 2010 32 bits versie.
Betreft ShellandWait heb ik naar gekeken maar snap hier de bedoeling niet van.
Via userform kom ik in notepad maar wat is hiervan de bedoeling, snap er niets van?
Kun jij e.e.a toelichten.

Wat moet je vermelden in notepad, wordt code gegenereerd ?


groet,
Jan
 
Shell voert de code uit en gaat direct verder, dit gaat zo snel dat kill niets vindt en een foutmelding geeft.
Shellandwait, voert de code uit, wacht even, en gaat netjes verder.

Het .bas bestand kan je binnen de VBA-editor importeren in een module.
Ik heb dat alvast voor je gedaan met de code van de site.
Laat de macro "Merge" lopen uit de bijlage.
 

Bijlagen

Laatst bewerkt:
Zou deze code misschien kunnen helpen?

Code:
If Dir("C:\test\data_barsttest.csv") <> "" Then Kill "C:\test\data_barsttest.csv"
If Dir("C:\test\Flag.txt") <> "" Then Kill "C:\test\Flag.txt"


   Shell "cmd /c copy C:\csv\*.csv C:\test\data_barsttest.csv > C:\test\Flag.txt", 0
   Do
     DoEvents
   Loop Until Dir("C:\test\data_barsttest.csv") <> ""

   Do
     DoEvents
   Loop Until FileLen("C:\test\data_barsttest.csv") > 0

    findIt = dir("C:\test\Flag.txt")
    While Len(FindIt) = 0
      FindIt = Dir("C:\Flag.txt")
    Wend

   Kill "C:\CSV\*.csv"

Grtz,
MDN111.
 
Hoi Allen,

Iedereen bedankt voor de hulp, uiteindelijk lijkt het er op dat de script met ShellandWait van alphamax werkt.
Althans thuis wel, morgen even testen op mijn werkplek.

MDN111 jou code heb ik getest echter deze heeft dezelfde problemen als eerder genoemd, in ieder geval bedankt.

snb en rebmog natuurlijk ook bedankt voor jullie tijd en hulp.
Ik heb er vertrouwen in dat het nu gaat werken.

groet,
Jan E
 
hallo allen,




Vandaag de script van snb met aanvulling sript alphamax (ShellandWait) getest en werkt perfect.

If Dir("C:\test\data_barsttest.csv") <> "" Then
Kill "C:\test\data_barsttest.csv"
End If

ShellAndWait "cmd /c copy C:\csv\*.csv C:\test\data_barsttest.csv", 0, vbMaximizedFocus, PromptUser

Kill "C:\CSV\*.csv"

Echter nu zou ik nog graag een aanvulling in de code willen.
Als gebruiker de macro activeert en er staan geen csv bestanden in de folder CSV dan verschijnt er een foutmelding.
Wat ik graag zou willen in dat geval dat MsgBox verschijnt met de melding "Meet resultaten ontbreken, deze eerst uitvoeren".
Gebruiker dient dan op OK te klikken in deze MsgBox en de code dient dan afgebroken te worden om te voorkomen dat Kill instuctie begint.
Wie weet welke code dan toegevoegd dient te worden aan bovenstaande script.

Alvast bedankt.
Jan E
 
Laatst bewerkt:
Zoiets?

Code:
[COLOR="#0000CD"]If Dir("C:\csv\*.csv") = "" Then
    MsgBox "Meetresultaten ontbreken, deze eerst uitvoeren.", vbOKOnly
    Exit Sub
End If[/COLOR]

If Dir("C:\test\data_barsttest.csv") <> "" Then
    Kill "C:\test\data_barsttest.csv"
End If

ShellAndWait "cmd /c copy C:\csv\*.csv C:\test\data_barsttest.csv", 0, vbMaximizedFocus, PromptUser

Kill "C:\CSV\*.csv"

Grtz,
MDN111.
 
Hoi Hellboy01 en MDN111,

Bedankt voor jullie reactie.
De code van MDN111 heb ik toegepast en geeft gewenste resultaat, bedankt daarvoor.

Groet,
Jan E
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan