VisualBasic Excel in Textdokument - Anführungszeichen

Lizzy Frog

Cadet 2nd Year
Registriert
Jan. 2015
Beiträge
17
Hallo!

Ich möchte einen Variablen Text in einer Excel Tabelle in Zelle A1 erzeugen um in in ein Textdokument zu übertragen. Das jedoch automatisch. Der Text ist einzeilig und enthält ua. Anführungszeichen. Im txt Dokument werden diese jedoch durch "" ersetzt und um den Text sind nochmal Anführungszeichen. Wie kann ich das beides verhindern?

Mfg
 
entferne das erste und letzte Zeichen und ersetze "" durch "
 
z.B.:
<project version="XMLPRJ01"><model><location>
Ist halt ein kleiner Ausschnitt. Manche Teile werden angepasst ans Datum (deshalb auch in Excel, weil ich das monatlich machen muss) und dann in ein txt-Dokument übertragen werden.
Dort steht dann aber:
"<project version=""XMLPRJ01""><model><location>"
Im txt soll aber das selbe wie in excel stehen, ohne Anführungszeichen.
 
setz doch einfach meine Anweisung um, die funktioniert
 
Stackoverflow rät, unter Excel als "formatierter Text (Leerzeichen getrennt) (*.prn)" zu speichern. Dort werden die nervigen zusätzlichen Anführungszeichen nicht eingefügt, die Datei kannst du ja außerhalb von Excel in .txt umbenennen.
 
Ich hab das mal eben ausprobiert, jedoch verhält es sich bei mir so, wie du es gerne hättest. Ich verstehe nicht warum du da ein Problem hast. Zeig doch mal bitte deinen Code, ich zeig dir auch meinen:

Code:
Sub foo()
Dim strTemp As String
Dim intFF As Integer

    intFF = FreeFile
    Open "c:\tmp\test.txt" For Output As #intFF
    strTemp = Cells(1, 1)

    Print #intFF, strTemp
    Close #intFF
End Sub

Welches Excel nutzt du? Ich hab 2013
 
@SheldonCooper Mit wem sprichst du? Ich weiß nicht, ob der/die TE in ihrem Exceldokument VBA verwendet. Wenn ich jedenfalls (mit dem völlig veralteten Excel 2003) Anfürungszeichen (oder auch Semikolons) im Text habe, so werden dort beim Speichern als Unicode-Text Anführungszeichen um die entsprechenden Zellen gemacht, und ein Anführungszeichen im Text wird durch zwei Anführungszeichen dargestellt.
Speichert man hingegen als .prn, so findet diese Ersetzung nicht statt. Bei linksbündigem Text sollte auch die Trennung mit Leerzeichen nicht stören.
 
Das war an den TE gerichtet. Dass er VBA verwendet schließe ich aus dem Titel: [VisualBasic] Excel in Textdokument - Anführungszeichen.
@TE: Nutzt du VBA? Erklär mal genauer was du mit "Das jedoch automatisch." meinst.
 
Upps, das hatte ich doch glatt übersehen. Oben bei Thema steht das Präfix nicht da. Dann wäre es ja wohl zumindest durchaus auch eine Möglichkeit, die Datei per VBA zu schreiben.
 
Ja, ich nutze vba.
@SheldonCooper: Der Teil zum "Speichern unter" habe durch Makro aufzeichnen herausgefunden und habe den einfach kopiert. Wenn gewünscht, kann ich ihn nachher reinsteigern. Bin erst später am PC. Leider Weiß ich nicht genau, was du mit deinem ersten Tipp meinst. Ich verstehe es so, dass ich im txt-Dokument "" mit " ersetzen und das erste und letzte " löschen soll. Das möchte ich jedoch nicht, weil der Text sehr lang ist und ich das etwa 20 mal machen müsste. Deshalb möchte ich das ja auch automatisch machen. Weiterhin muss ich das eben regelmäßig machen und da möchte ich mir das lange umwandeln und löschen ersparen..

@simpsonsfan: Das mit .prn probiere ich nachher mal aus.

Vielen Dank für eure Antworten!
Ich erstatte euch später Bericht. Ich wollte nur kurz die Fragen beantworten.
 
Sorry, ich ging davon aus dass du programmieren kannst. Jetzt hab ich verstanden was dein Problem ist. Nimm mal diesen Code statt deines Makros. Hab ihn extra für Nichtprogrammierer kommentiert.

Code:
Sub foo()
Dim strTemp As String 'Inhalt der Zelle A1
Dim intFF As Integer 'freie Dateinummer
Dim strPfad As String 'Pfad zur ausgewählten Datei (inkl. Dateiname)

    strPfad = Application.GetSaveAsFilename(fileFilter:="Text-Dateien (*.txt), *.txt") 'öffnet einen "Datei speichern unter.."-Dialog

    If strPfad = "Falsch" Then 'wenn der Benutzer "Abbrechen" gedrückt hat...
        Exit Sub '...brechen wir die Prozedur ab
    End If
    
    intFF = FreeFile 'nächste freie Dateinummer anfordern
    Open strPfad For Output As #intFF 'Datei öffnen
    strTemp = Cells(1, 1) 'Inhalt der Zelle A1 in Variable einlesen
    
    Print #intFF, strTemp 'Variableninhalt in Datei schreiben
    Close #intFF 'Datei schließen
End Sub
 
Kann nur die "Grundfunktionen" von vba. C# und Java sind eher meins. :D
Dein Code funktioniert super, vielen Dank. Nur wie kann ich Zeile 6 ändern, dass ich direkt den Dateipfad im Code angeben kann? Der soll nämlich fest sein.
Und das mit .prn funktioniert zwar, jedoch werden neue Zeilen eingefügt, die stören. Der herausgegebene Text muss einzeilig sein, weil ich sonst nichts damit anfangen kann..
 
Zuletzt bearbeitet:
Lizzy Frog schrieb:
Nur wie kann ich Zeile 6 ändern, dass ich direkt den Dateipfad im Code angeben kann? Der soll nämlich fest sein.
Oh, sorry. Dachte du brauchst das so. Nimm den Code aus #7
 
Gerne
 
Sorry, doch noch ne Frage
Ist das auch möglich, den Dateinamen mit einer Variable zu bestimmen?
Hab in den Zellen was drin stehen und er soll von oben nach unten durchgehen und die Datei so nennen.
Wenn ich aus #6 Zeile 6 z.B. so umändere:

Code:
Open "T:\test\" & test & ".xprj" For Output As #intFF
(test ist hier die Variable, die sich beim Durchlauf einer for-Schleife ändern soll)

funktioniert es nicht.
Ist es überhaupt möglich?
Ergänzung ()

So sieht mein Code jetzt aus:

Code:
Private Sub Auto_Open()

    Dim strMonat, strJahr As String
    Dim dateDatum As Date
    Dim strTemp As String
    Dim intFF As Integer
    Dim intZeile As Integer
    Dim strNiederlassung As String
    Dim strPfad As String
    dateDatum = Date - 30
    strMonat = Format(Datum, "MM")
    strJahr = Format(Datum, "YYYY")

    For intZeile = 1 To Range("A1048576").End(xlUp).Row
        
        strNiederlassung = Cells(intZeile, 1).Value
        strPfad = "T:\daten\" & strNiederlassung & ".txt"
        intFF = FreeFile
        Open strPfad For Output As #intFF
        
        strTemp = "Text, der sich bei jedem Durchlauf ändert" 'Habe ich hier jetzt mal weggeschnitten, da es sonst zu viel wird
        Print #intFF, strTemp
        Close #intFF
    
    
    Next intZeile

End Sub

Jetzt wird jedoch nur eine Datei mit dem Namen ".txt" erstellt.
 
Bei mir funktioniert es. Ich gehe davon aus, dass deine Tabelle unvollständig ist. Steht in Spalte A etwas drin? Wenn ich Spalte A leer lasse kann ich das von dir beschriebene Verhalten reproduzieren.
 
Ich verlass jetzt den Thread. Wenn noch was ist schreib einfach ne PM
 
Zurück
Oben