Microsoft Excel

Herbers Excel/VBA-Archiv

Schreiben in txt-Datei Zugriff verweiger

Betrifft: Schreiben in txt-Datei Zugriff verweiger von: Nina Nina
Geschrieben am: 13.10.2020 14:34:01

Hallo an alle,

zunächst wollte ich allen 'Antwortschreibern' hier mal Danke sagen! In meiner Arbeit habe ich viel mit der Erstellung von Makros zu tun und bin immer wieder begeistert, dass in diesem Forum wirklich jede Frage unglaublich kompetent und nett beantwortet wird!

Nun zu meinem Problem :)

Ich habe eine Mappe mit vielen Tabellenblättern und möchte nun eine .txt-Datei erstellen und dort nach einem bestimmten Muster die Daten aus den verschiedenen Tabellenblättern zusammenführen und speichern.

Leider scheitere ich gerade bereits beim Öffnen meiner erstellten .txt-Datei, da immer der Fehler "Laufzeitfehler 70 - Zugriff verweigert" erscheint.

Die Datei wird problemlos erstellt, allerdings kann ich sie selbst hinterher anscheinend nicht öffnen. Sie ist nicht schreibgeschützt.

Anbei mein Code und schonmal vielen Dank für eure Mühe!

Private Sub DateiErstellen()

'** Dieses Modul erstellt die TXT-Datei ev_rules, in welcher die Bewertungen der EF aufgelistet  _
werden


Dim Pfad As String
Dim Zeilenanzahl As Integer
Dim myDatei As String
Dim PfadDatei As String

Pfad = ThisWorkbook.Sheets("Einstellungen").Range("F" & 4).Value '* Pfad zur Erstellung der  _
Datei

myDatei = "ev_rules_test"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextfile(Pfad & myDatei & ".txt")

PfadDatei = Pfad & myDatei & ".txt" '* Pfad der Datei

    Dim array_(), varItem As Variant
    Dim worksheet_ As Worksheet
    Dim path_ As String
    Dim file_ As Long
    
    path_ = PfadDatei
    
    
    Set worksheet_ = ThisWorkbook.Sheets("EF")
    array_ = ValueArray(worksheet_)
    
    file_ = FreeFile
    Open PfadDatei For Output As #file_
        
        For Each varItem In array_
            Print #file_, varItem
        Next varItem
                
    Close #file_
    
   
End Sub

Private Function ValueArray(ByVal ws As Worksheet) As Variant

    Dim array_() As Variant
    Dim i As Long
    Dim Zeilenanzahl As Integer
    
    Zeilenanzahl = Worksheets("EF").Cells(Rows.Count, 4).End(xlUp).Row '* Nur fehler mit  _
Ereignistext unter "D"
    
    ReDim array_(489)
    
    With ws
        For i = 2 To Zeilenanzahl
            array_(i - 2) = .Cells(i, 1).text & ";" & _
                                .Cells(i, 4).text
                                
        Next i
    End With
    
    ValueArray = array_
    Erase array_
    
End Function

Betrifft: AW: Schreiben in txt-Datei Zugriff verweiger
von: Nepumuk
Geschrieben am: 13.10.2020 14:49:31

Hallo Nina,

schmeiß die beiden Zeilen raus. Die Textdatei wird mit dem Open-Statement automatisch erzeugt wenn sie noch nicht existiert.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextfile(Pfad & myDatei & ".txt")

Gruß
Nepumuk

Betrifft: AW: Schreiben in txt-Datei Zugriff verweiger
von: Nina Nina
Geschrieben am: 13.10.2020 18:08:00

Hallo Nepumuk,

entschuldige, dass ich mich erst so spät zurück melde, aber anscheinend habe ich den Beitrag zwei mal geposted und ich habe das nicht bemerkt :-)

Vielen lieben Dank! Jetzt schreibt er ohne Murren in die Datei!!!

Viele Grüße aus Nürnberg

Nina

Betrifft: AW: Schreiben in txt-Datei Zugriff verweiger
von: Rudi Maintaire
Geschrieben am: 13.10.2020 14:56:31

Hallo,
Private Sub DateiErstellen()

'** Dieses Modul erstellt die TXT-Datei ev_rules, in welcher die Bewertungen der EF aufgelistet  _
_
werden


Dim Pfad As String
Dim myDatei As String
Dim PfadDatei As String
    Dim worksheet_ As Worksheet
    Dim file_ As Long
    
Pfad = ThisWorkbook.Sheets("Einstellungen").Range("F" & 4).Value '* Pfad zur Erstellung der  _
Datei
If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
myDatei = "ev_rules_test"

PfadDatei = Pfad & myDatei & ".txt" '* Pfad der Datei
    
    Set worksheet_ = ThisWorkbook.Sheets("EF")
    file_ = FreeFile
    Open PfadDatei For Output As #file_
    Print #file_, Join(ValueArray(worksheet_), vbCrLf)
    Close #file_
   
End Sub

Private Function ValueArray(ByVal ws As Worksheet) As Variant

    Dim array_() As Variant
    Dim i As Long
    Dim Zeilenanzahl As Integer
    
    Zeilenanzahl = Worksheets("EF").Cells(Rows.Count, 4).End(xlUp).Row '* Nur fehler mit _
Ereignistext unter "D"
    
    ReDim array_(Zeilenanzahl - 2)
    
    With ws
        For i = 2 To Zeilenanzahl
            array_(i - 2) = .Cells(i, 1).Text & ";" & _
                                .Cells(i, 4).Text
        Next i
    End With
    
    ValueArray = array_
    
End Function

Gruß
Rudi

Betrifft: AW: Schreiben in txt-Datei Zugriff verweiger
von: Nina Nina
Geschrieben am: 13.10.2020 18:10:48

Hallo Rudi,

vielen Dank für deine Lösung und die "Backslash-Prüfung", daran hatte ich noch gar nicht gedacht.
Funktioniert einwandfrei!

Viele Grüße aus Nürnberg
Nina