• 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.

Createtextfile werkt niet altijd

Status
Niet open voor verdere reacties.

Jeroen123456

Gebruiker
Lid geworden
3 jul 2007
Berichten
115
Ik heb een macro geschreven die van een range in een worksheet een texfile aanmaakt die daarna gebruikt wordt als een xml bestand.
Dit xml bestand wordt dan in een ander pakket ingelezen.

Heel af en toe weigert de macro om een bestand weg te schrijven.
mijn stellige vermoeden is dat er een teken wordt gebruikt dat niet een een textfile gebruikt mag worden, maar ik kan het niet vinden.

Iemand een idee waarom textfile niet wordt aangemaakt?

Bijgevoegd een testbestand
Helaas is het niet mogelijk een werkend bestand mee te geven ivm privacy.
 

Bijlagen

De naam van het xml bestand mankeert niets aan.
Verder zijn in je voorbeeld document alle waarden #VERW! dus daar valt niks uit op te maken.
Tevens vertel je niet de evt. foutmelding die je dan krijgt.

Gebruik de Debug mode om de oorzaak te vinden.
Controleer ook de schrijfrechten voor de root van de C: schijf.
 
De #verw had ik er beter uit kunnen halen, sorry. In het testbestand heb ik de vertaalslag uit andere werkbladen verwijderd.
Voor de test is alleen kolom c van belang. deze heb ik nu voor het testbestand als [waarden] geplakt.

Fout 5 tijdens uitvoering:
Ongeldige procedure-aanroep of ongeldig argument.

Rechten heb ik nagezien en die staan goed.
De macro komt in ieder nieuw dossier voor en in de andere dossiers werkt het prima.
 
En heb je al gekeken op welke regel in de code je die melding krijgt?
 
A ja, heerlijke code, alle stappen samengebald in één lang statement, vrijwel onmogelijk te troubleshooten.

Zo kan het ook. Ietsiepietsie langzamer, maar zonder foutmeldingen met je voorbeeldgegevens:
Code:
Sub Dumpen_exportbestand_XML()
'
' Dumpen_exportbestand Macro
' De macro is gemaakt op 18-6-2021 door JKPieterse https://jkp-ads.com.
'
    Dim oneCell As Range
    Dim fileNum As Long
    Dim fileName As String
    'Voor het testen wellicht directory aanpassen waar bestand heen gaat.
    fileName = "C:\AGS3_XML_DUMP.xml"
    On Error Resume Next
    Kill fileName
    On Error GoTo 0
    fileNum = FreeFile
    Open fileName For Output As fileNum
    With Sheets("exportdump")
        For Each oneCell In .Range(.Range("A6"), Range("A" & .Rows.Count).End(xlUp).Offset(6))
            Print #fileNum, oneCell.Value
        Next
    End With
    Close #fileNum

End Sub
 
Beste Edmoor,

Melding komt op de regel create object..


Beste Karel,

Ik ben slechts een gebruiker en de meeste codes zijn netjes gekregen van een van de forumleden.
Heel erg bedankt voor je stukje code. Daar valt niets aan te debuggen want dit stukje code werkt gewoon.
Nu weet ik nog steeds niet waarom soms die andere code niet werkt maar ja je kunt niet alles hebben. haha
Ik ga voortaan jou code gebruiken.

Nogmaals bedankt voor jullie hulp.
 
Dus niet "create object" maar "CreateObject"
Wees precies in het aangeven van dingen.

Maar er eens dit van:
Code:
CreateObject("scripting.filesystemobject").createtextfile("C:\Test\AGS3_XML_DUMP.xml"[COLOR="#FF0000"], True, True[/COLOR]).write Join(Application.Transpose(Sheets("exportdump").Range("C6:C" & tar + 5)), vbCrLf)
 
Laatst bewerkt:
Ik ben slechts een gebruiker en de meeste codes zijn netjes gekregen van een van de forumleden.

Dat snap ik hoor. Ik ben persoonlijk gewoon niet zo van die "alles in een" code. Als er dan iets niet werkt, dan wordt het voor mij lastig te achterhalen welk deel de fout veroorzaakt.
Anderen doen het graag zo kort mogelijk. Leuk, maar niets voor mij.
 
Dat ben ik helemaal met je eens :)
 
Vastlopertje

Beste JK,

Ik heb jouw code getest en in gebruik genomen.
Leek allemaal goed te gaan.

Eenmaal ingevoerd loop ik er tegen aan dat de macro vastloopt op

Code:
For Each oneCell In .Range(.Range("C6"), Range("C" & .Rows.Count).End(xlUp).Offset(6))
            Print #fileNum, oneCell.Value

Fout 1004 tijdens uitvoering: Door de toepassing of object gedefinieerde fout

Nu heb ik het idee dat het niet de code fout is maar dat de code niet uitgevoerd mag worden.
Er is wel een bestand aangemaakt, maar zonder inhoud.
Kan het zijn dat er geen toegang is tot het bestand en de macro niet schrijven mag? rechten kwestie?

Ik kan helaas geen test bestand meesturen vanwege de grote hoeveel klantgegevens in het bestand.
 
Je hebt twee regels geplaatst, maar de fout zal er op eentje zijn opgetreden. Welke was geel?
 
Levert geen enkel probleem op:
Code:
Sub Dumpen_exportbestand_XML()
   CreateObject("Scripting.FileSystemObject").CreateTextFile("G:\OF\AGS3_XML_DUMP.xml", -1, -1).write Join(Application.Transpose(Blad33.Columns(3).SpecialCells(2)), vbCrLf)
End Sub
Voor stappenliefhebbers:
Code:
Sub Dumpen_exportbestand_XML()
  c00=Join(Application.Transpose(Blad33.Columns(3).SpecialCells(2)), vbCrLf)
  CreateObject("Scripting.FileSystemObject").CreateTextFile("G:\OF\AGS3_XML_DUMP.xml", -1, -1).write c00
End Sub
of
Code:
Sub Dumpen_exportbestand_XML()
   Open "G:\OF\AGS3_XML_DUMP.xml" For Output As 1
      Print #1, Join(Application.Transpose(Blad33.Columns(3).SpecialCells(2)), vbCrLf)
   Close
End Sub
 
Laatst bewerkt:
Oplossing gevonden

Beste heren,

Dank voor jullie hulp.
Ik heb het probleem gevonden..

In heel uitzonderlijke gevallen kan het zijn dat een gebruiker een invoer doet die in 1 van de 2355 regels van de dumptext een #waarde of #delen door nul melding geeft.
Daar zal de .write wel niet heel erg tegen kunnen. :o

Fijn weekend alvast!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan