Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern in Textdatei

Speichern in Textdatei
30.06.2014 15:23:59
Alexandra
Hallo,
ich bin ein ziemlicher VBA-Neuling und möchte Text aus einem Excel-Sheet in einer Textdatei speichern. Dazu habe ich einen Code im Internet gefunden und leicht für meine Bedürfnisse abgeändert (unten angehängt).
Dies hat bei mir und einigen Kollegen auch einwandfrei funktioniert, jedoch bekommt ein Kollege beim Ausführen des Codes immer wieder (jedoch nicht jedes Mal) die Fehlermeldung: Laufzeitfehler 2147221040 in der Zeile: "oClipBoard.GetFromClipboard".
Nun habe ich bereits im Internet recherchiert, das bereits andere scheinbar zufällig
auftretende Probleme bei ähnlichem Code hatten, ich habe aber bisher keine Lösung für das Problem finden können.
Hat jemand eine Idee, woher das Problem kommen könnte und wie man es lösen kann?
Alternativ wäre ich auch sehr dankbar für andere Vorgehensweisen, wie man den Text in eine Textdatei bekommt ohne die Zwischenablage zu nutzen.
Viele Grüße,
Alexandra
[Code]
Sub SaveText()
Dim fso As Object, oStream As Object, oClipBoard As Object
Dim FileName As String
FileName = Sheets(1).Range("I6").Value + "xxx.txt"
' Textdatei erstellen
Set fso = CreateObject("Scripting.FileSystemObject")
Set oStream = fso.CreateTextFile(FileName, True)
oStream.Close
'Temp Textdatei mit Daten aus Zwischenablage versorgen
Set oStream = fso.OpenTextFile(FileName, 2)
Set oClipBoard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Sheets("x").Select
ClearClipboard = True
Sheets("x").UsedRange.Copy
'Daten in Zwischenablage kopieren
oClipBoard.GetFromClipboard
'Daten von Zwischenablage in Txt Datei einfügen
oStream.WriteLine oClipBoard.GetText
Application.CutCopyMode = False
oStream.Close
Set oStream = Nothing
Set oClipBoard = Nothing
Set fso = Nothing
End 

Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern in Textdatei
30.06.2014 15:58:34
Beverly
Hi Alexandra,
weshalb kopierst du das Tabellenblatt nicht in eine neue Arbeitsmappe und speicherst diese dann als Texdatei ab?


AW: Speichern in Textdatei
30.06.2014 16:38:31
Alexandra
Hallo Beverly,
danke für deine Antwort!
Das war mein erster Ansatz, bevor ich den geposteten Code benutzt habe, und damals hatte ich das Problem, dass der Inhalt der Textdatei nicht einfach überspeichert wurde. Kann man das irgendwie einstellen?
Ich werde das gleich auf jeden Fall noch mal ausprobieren und schauen, wo genau das Problem da bestand.
Viele Grüße,
Alexandra

Anzeige
AW: Speichern in Textdatei
30.06.2014 16:43:36
Beverly
Hi Alexandra,
was meinst du mit "dass der Inhalt der Textdatei nicht einfach überspeichert wurde"?


AW: Speichern in Textdatei
30.06.2014 16:46:39
Alexandra
Ich hab es gerade nicht mehr exakt im Kopf (deswegen werde ich das gleich auch noch mal ausprobieren), aber ich glaube, es kam ein Hinweis, dass die Datei bereits existiert und dann wurde abgebrochen.
Ich möchte, dass der Inhalt der Datei jedes Mal komplett überschrieben wird.

AW: Speichern in Textdatei
30.06.2014 16:57:42
Beverly
Dann ergänze in deinem Code vor und nach dem Speichern die beiden Zeilen
Application.DisplayAlerts = False
und
Application.DisplayAlerts = True


Anzeige
AW: Speichern in Textdatei
30.06.2014 17:11:18
Alexandra
Danke für den Hinweis!
Ich habe es gerade ausprobiert und gemerkt, dass ich das falsch im Kopf hatte. Ob es überspeichert werden soll, wird zwar abgefragt, aber stellt eigentlich kein großes Problem dar, bzw. lässt sich ja auch mit den von dir genannten Befehlen abstellen.
Das Problem war, dass das Tabellenblatt mit umbenannt wird, wenn ich es als Textdatei mit anderem Namen gespeichert habe. Dies ist aber im Vergleich zu dem Zwischenablage-Problem eher gering, dann werde ich die Tabellenblätter und zugehörigen Textdateien einfach gleich benennen. Zwischenspeichern in einer neuen Arbeitsmappe oder einem neuen Tabellenblatt möchte ich eigentlich vermeiden, da ich sowieso schon mit so vielen Blättern und Dateien arbeite, dass es Mühe macht den Überblick zu behalten.
Bei mir funktioniert es jetzt mit dem einfachen Abspeichern als Textdatei, ich werde diese Version morgen meinem Kollegen zum Testen geben (denn bei mir hat ja auch die andere Version funktioniert).
Vielen Dank für deine Hilfe!
Viele Grüße,
Alexandra

Anzeige
AW: Speichern in Textdatei
30.06.2014 17:18:24
Beverly
Hi Alexandra,
in deinem ursprünglichen Code entnimmst du doch den Speichernamen der Textdatei einer Zelle - das kannst du doch in den neuen Code auch übernehmen. Wenn du das Tabellenblatt in eine neue Arbeitsmappe kopierst (mittels Wokbooks.Add) wird schließlich nur ein Template erstellt, das du dann als Textdatei unter dem Namen aus dieser Zelle abspeicherst - eine Zwischenspeicherung als Excel-Datei ist dabei nicht notwendig.


AW: Speichern in Textdatei
30.06.2014 17:27:13
Alexandra
Hallo Beverly,
ich erstelle also eine Arbeitsmappe, die ich ausschließlich als Textdatei abspeichere? Das wäre natürlich eine gute Möglichkeit.
Meine derzeitige Version funktioniert zwar an sich, nervig ist nur, dass ich dann bei der Speicherung der Exceldatei wieder auf xlsm und den normalen Namen umstellen muss, weil es sich ja das Speichern als Textdatei merkt.
Viele Grüße,
Alexandra

Anzeige
AW: Speichern in Textdatei
30.06.2014 17:39:37
Beverly
Hi Alexandra,
am einfachsten geht es nach diesem Prinzip:
    Worksheets("Test").Copy
Und das dadurch entstandene Template speicherst du dann als Textdatei mit dem entsprechenden Namen.


AW: Speichern in Textdatei
30.06.2014 17:54:03
Alexandra
Hallo Beverly,
vielen Dank, das funktioniert einwandfrei und war viel leichter, als ich dachte...
Viele Grüße,
Alexandra

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige