toegang geweigerd omzeilen via vba

Status
Niet open voor verdere reacties.

flaggelant

Gebruiker
Lid geworden
17 sep 2009
Berichten
9
Hoi,

ik gebruik een xlsm om een txt bestand (dit is een log bestand met niet essentiele log gegevens voor een ander programma) in te lezen, in dit .txt bestand worden constant gegevens bijgeschreven, ook tijdens het openen van het bestand via excel.

als ik via een macro de informatie heb verwerkt naar een bestand met de datum erachter en het originele log-bestand heb leeggemaakt, wil ik een leeg tabblad weer opslaan onder het originele txt bestand. (De gegevens die tussen het openen en bewerken van het bestand worden bijgeschreven mogen verloren gaan, dit vormt geen probleem)

Omdat er in het bestand echter constant data wordt bijgeschreven volgt dan de melding dat het oplsaan een fout 1004 opleverd;

---

fout 1004 tijdens uitvoeren;
kan geen toegang krijgen tot voer.txt
---

is er een methode binnen BVA, om deze melding, die naar mijn idee een "alleen lezen"
foutmelding is, omdat het bestand al in gebruik is, te negeren en het bestand toch te overschrijven?

(De eigenschappen van het .txt bestand zijn niet ingesteld als zijnde alleen lezen)


ik zat zelf te denken om het bestand volledig te verwijderen en er een nieuw leeg bestand voer.txt voor in de plaats te zetten, maar mijn verwijder bestand macro;
Kill "C:\Dairypln\voer.txt"

krijgt een vergelijkbare toegangs weigering;
---

fout 70 tijdens uitvoeren;
toegang geweigerd
---

Dus de vraag is of dergelijke foutmeldingen kunnen worden omzeild, zodat dit bestand toch kan worden vervangen/overschreven.
 
Heb je het gebruik van een TekstQuery overwogen ?
 
ik weet niet precies wat een tekstquery doet, maar het leegmaken van het txt bestand is een belangrijk onderdeel van de opdracht,
omdat de logfile in enkele weken tijd zoveel data binnenkrijgt dat het niet meer te openen is in txt/xls, daarom dat ik het in kleine onderdelen weg wil schrijven en dan weer blanco wil opslaan.
 
Lezen van de tekstfile en leegmaken:

Code:
sub snb()
  open "E:\OF\voer.txt" for input as #1
    c01=Input(LOF(1),1)
  close

  open "E:\OF\voer.txt" for output as #1
   print #1,""
  close
end sub
Met de tekstreeks (string) c01 kun je nu doen wat je wil.
Het bestand "voer.txt" is geheel leeg
 
Hoi, sorry voor de late reactie..

Het probleem ligt hem meer in het opslaan (of verwijderen) in/van het originele bestand, hierop krijg ik de error 1004 (bij opslaan) en 70 (bij verwijderen).
is er een manier om dit soort foutmeldingen te negeren, of te passeren?
 
het automatisch openen & leegmaken is niet het probleem, daarvoor heb ik werkende macro's geschreven, op een blanco bestand op een andere pc. Maar ik kan het bestand daarna niet meer opslaan als het originele bestand op de juiste locatie(omdat het nog in gebruik is door een ander programma)

ik probeer dus een logfile (voer.txt) te openen terwijl het nog in gebruik is door een ander programma (DPprocescontrole.exe), doordat het nog in gebruik is krijg je een foutmelding als je het bestand wil overschrijven en-/of verwijderen.

de vraag is dus;

is het mogelijk om de foutmelding, die aangeeft dat de toegang geweigerd wordt
tijdens het opslaan en-/of verwijderen negeren via een bepaalde macro/vba code?
(het bestand is niet beveiligd, maar wel nog in gebruik door als logfile,wat naar mijn idee de melding veroorzaakt)
 
Flaggelant,

Het is binnen windows niet mogelijk om een bestand te overschrijven of te wijzigen zolang er een ander programma in dat zelfde bestand
werkzaam is.
Is er geen moment waarop het bestand niet in gebruik is? Bijvoorbeeld 's nachts op het moment dat er een backup draait.
Dat zou het moment zijn om het bestand van zijn inhoud te ontdoen.
Je kan dan een kopie of de back up gebruiken om de gegevens in te lezen. Ik zou zeggen ga eens praten met de IT man.

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan