Excel 2007 hrausschreiben von Spalteninhalten
Hallo!
Ich arbeite mit Excel 2007 und hätte da jetzt eine Frage. Ist es möglich, dass ich Inhalte aus einer Spalte per Makro herausschreiben lasse, in eine Textdatei rein, und zwar so, dass in der Textdatei dann pro Zeile immer nur ein Eintrag ist?
Wie sieht mein Excel ca aus?
Also das Excelblatt wird sagen wir mal von Spalte A-S mit Daten befüllt sein. Und das bis ca in die 100erste Zeile. Jetzt will ich alle Einträge aus Spalte T in einem Textfile haben, das irgendwo liegen kann (wo ich natürlich Schreibberechtigung habe.
Ist das möglich? Wenn ja, kann mir vielleicht einer die Lösung posten?
Wäre wirklich super!
LG Barashnukor alias Stefan
Ps.: Danke schon mal im vorraus
Ich arbeite mit Excel 2007 und hätte da jetzt eine Frage. Ist es möglich, dass ich Inhalte aus einer Spalte per Makro herausschreiben lasse, in eine Textdatei rein, und zwar so, dass in der Textdatei dann pro Zeile immer nur ein Eintrag ist?
Wie sieht mein Excel ca aus?
Also das Excelblatt wird sagen wir mal von Spalte A-S mit Daten befüllt sein. Und das bis ca in die 100erste Zeile. Jetzt will ich alle Einträge aus Spalte T in einem Textfile haben, das irgendwo liegen kann (wo ich natürlich Schreibberechtigung habe.
Ist das möglich? Wenn ja, kann mir vielleicht einer die Lösung posten?
Wäre wirklich super!
LG Barashnukor alias Stefan
Ps.: Danke schon mal im vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116255
Url: https://administrator.de/contentid/116255
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
18 Kommentare
Neuester Kommentar
Hallo Stefan,
möglicherweise ist der Lösungansatz von --h1e-- aber gar nicht so schlecht! Folgenden Vorschlag habe ich für Dich, da ich schon öfters mit Makros innerhalb von Word, Excel, usw. gearbeitet habe!..
Mit ALT + F8 kannst du unter Microsoft Excel "Makros aufzeichnen". Das bedeutet, jegliche Akiton, die du ausführst wird im Hintergrund durch den Makro "Aufzeichner" aufgenommen und in einem Makro gespeichert! Nun zu deinem "Problem"
Lass doch von dem Makro die Spalte makieren, kopieren und in einem neuen Datenblatt einfügen, welches widerrum dann unter einer *.txt abgespeichert wird! Ist vielleicht auf den ersten Blick etwas umständlich, aber nacher bedeutet es nur noch einen dumpfen Klick und die Sache ist geritzt ... Darüber hinaus kannst du dann das Makro danach über die Konsole noch nach Belieben anpassen!..
Probier das doch einfach mal?!.. Solltest du irgendwie Hilfe brauchen dabei sag mir einfach bescheid=)
Mfg,
Michael
möglicherweise ist der Lösungansatz von --h1e-- aber gar nicht so schlecht! Folgenden Vorschlag habe ich für Dich, da ich schon öfters mit Makros innerhalb von Word, Excel, usw. gearbeitet habe!..
Mit ALT + F8 kannst du unter Microsoft Excel "Makros aufzeichnen". Das bedeutet, jegliche Akiton, die du ausführst wird im Hintergrund durch den Makro "Aufzeichner" aufgenommen und in einem Makro gespeichert! Nun zu deinem "Problem"
Lass doch von dem Makro die Spalte makieren, kopieren und in einem neuen Datenblatt einfügen, welches widerrum dann unter einer *.txt abgespeichert wird! Ist vielleicht auf den ersten Blick etwas umständlich, aber nacher bedeutet es nur noch einen dumpfen Klick und die Sache ist geritzt ... Darüber hinaus kannst du dann das Makro danach über die Konsole noch nach Belieben anpassen!..
Probier das doch einfach mal?!.. Solltest du irgendwie Hilfe brauchen dabei sag mir einfach bescheid=)
Mfg,
Michael
Hallo Stefan!
Wenn's aber doch ein Stück VBA sein soll, dann etwa so (erstellt unter Excel 2003):
Es werden alle Zellinhalte aus der vorgegebenen "Spalte" (beginnend in Zeile "AbZeile") in die angegebenen "Datei" geschrieben, bis die erste leere Zelle erreicht wird.
In dieser "Minimalvariante" erfolgt keine Überprüfung auf Schreibrechte bzw auf das Vorhandensein einer gleichnamigen Zieldatei (welche kommentarlos überschrieben würde).
Grüße
bastla
Wenn's aber doch ein Stück VBA sein soll, dann etwa so (erstellt unter Excel 2003):
Sub ExportiereSpalte()
Const Spalte As String = "T"
Const AbZeile As Integer = 3
Datei = "D:\Export.txt"
Open Datei For Output As 1
Zeile = AbZeile
Do While Cells(Zeile, Spalte) <> ""
Print #1, Cells(Zeile, Spalte)
Zeile = Zeile + 1
Loop
Close 1
MsgBox "Die Spalte """ & Spalte & """ wurde in die Datei " & vbCrLf & """" & Datei & """ exportiert."
End Sub
In dieser "Minimalvariante" erfolgt keine Überprüfung auf Schreibrechte bzw auf das Vorhandensein einer gleichnamigen Zieldatei (welche kommentarlos überschrieben würde).
Grüße
bastla
und mit :
Dim DatNam As String
Dim NeuDatNam As String
DatNam = "c:\dateiname.txt"
NeuDatNam = Mid(DatNam, 1, InStrRev(DatNam, ".") - 1) & _
Format(Date, "yyyymm") & Mid(DatNam, InStrRev(DatNam, "."))
Name DatNam As NeuDatNam
Kann man noch das Datum anhängen.
Quelle: http://www.office-loesung.de/ftopic63624_0_0_asc.php
Dim DatNam As String
Dim NeuDatNam As String
DatNam = "c:\dateiname.txt"
NeuDatNam = Mid(DatNam, 1, InStrRev(DatNam, ".") - 1) & _
Format(Date, "yyyymm") & Mid(DatNam, InStrRev(DatNam, "."))
Name DatNam As NeuDatNam
Kann man noch das Datum anhängen.
Quelle: http://www.office-loesung.de/ftopic63624_0_0_asc.php
Hallo,
ich habe das Script - Dank an bastla - für mich ein wenig abgeändert, damit die Textdatei immer in das Verzeichnis geschrieben wird, in dem auch die Exceldatei liegt, aus der es ausgeführt wird.
Das Makro funktioniert so in Excel 2003 einwandfrei.
In Excel 2007 läuft es jedoch nicht. Fehlermeldung ist: Fehler beim Kompilieren: Syntaxfehler (in der Zeile: Print #1, Cells(Zeile, Spalte)
Wie muss ich es denn anpassen, damit es auch unter Excel 2007 funktioniert? (ich führe es dort als Add-In aus, damit ich ich es immer in allen Excel-Dateien zur Verfügung habe).
MfG
Yosimo
ich habe das Script - Dank an bastla - für mich ein wenig abgeändert, damit die Textdatei immer in das Verzeichnis geschrieben wird, in dem auch die Exceldatei liegt, aus der es ausgeführt wird.
Das Makro funktioniert so in Excel 2003 einwandfrei.
Sub ExportiereSpalte()
Const Spalte As String = "E"
Const AbZeile As Integer = 1
Datei = "Export.txt"
Open ActiveWorkbook.Path & "\" & Datei For Output As 1
Zeile = AbZeile
Do While Cells(Zeile, Spalte) <> ""
Print #1, Cells(Zeile, Spalte)
Zeile = Zeile + 1
Loop
Close 1
MsgBox "Die Spalte """ & Spalte & """ wurde in die Datei " & vbCrLf & """" & Datei & """ exportiert."
End Sub
In Excel 2007 läuft es jedoch nicht. Fehlermeldung ist: Fehler beim Kompilieren: Syntaxfehler (in der Zeile: Print #1, Cells(Zeile, Spalte)
Wie muss ich es denn anpassen, damit es auch unter Excel 2007 funktioniert? (ich führe es dort als Add-In aus, damit ich ich es immer in allen Excel-Dateien zur Verfügung habe).
MfG
Yosimo
Hallo Yosimo!
Du kannst auf die Verwendung des "FileSystemObjects" umstellen:
Grüße
bastla
Du kannst auf die Verwendung des "FileSystemObjects" umstellen:
Sub ExportiereSpalte()
Const Spalte As String = "E"
Const AbZeile As Integer = 1
Datei = "Export.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set DateiAus = fso.CreateTextFile(ActiveWorkbook.Path & "\" & Datei)
Zeile = AbZeile
Do While Cells(Zeile, Spalte) <> ""
DateiAus.WriteLine Cells(Zeile, Spalte)
Zeile = Zeile + 1
Loop
DateiAus.Close
MsgBox "Die Spalte """ & Spalte & """ wurde in die Datei " & vbCrLf & """" & Datei & """ exportiert."
End Sub
bastla
Hallo,
ich habe die MsgBox-Zeile dahin abgeändert, dass Sie mir auch die Anzahl der erstellten TXT-Dateien meldet:
Allerdings werden immer 2 zuviel gemeldet. Und wenn die Spalte, aus der die TXT-Dateien geschrieben werden, leer ist, werden zwar keine TXT-Dateien erzeugt, aber die MsgBox meldet 2.
Ich lasse immer ab der 2. Zeile rausschreiben.
Wie muss ich denn den Code ändern, damit die richtige Anzahl gemeldet wird?
(Excel2007 unter Win7)
Grüße
Yosimo
ich habe die MsgBox-Zeile dahin abgeändert, dass Sie mir auch die Anzahl der erstellten TXT-Dateien meldet:
Sub ExportiereSpalte(control As IRibbonControl)
Ziel = ActiveWorkbook.Path & "\"
Stellen = 5
Typ = ".txt"
AbZeile = 2
Spalte = "A"
Zeile = AbZeile
Nr = 1000001
Set fso = CreateObject("Scripting.FileSystemObject")
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\"
Do While Cells(Zeile, Spalte).Value <> ""
fso.CreateTextFile(Ziel & Right(Nr, Stellen) & Typ).Write Cells(Zeile, Spalte).Value
Zeile = Zeile + 1
Nr = Nr + 1
Loop
MsgBox "Fertig!" & vbCrLf & "Aus Spalte """ & Spalte & """ wurden """ & Zeile & """ TXT-Dateien erzeugt."
End Sub
Allerdings werden immer 2 zuviel gemeldet. Und wenn die Spalte, aus der die TXT-Dateien geschrieben werden, leer ist, werden zwar keine TXT-Dateien erzeugt, aber die MsgBox meldet 2.
Ich lasse immer ab der 2. Zeile rausschreiben.
Wie muss ich denn den Code ändern, damit die richtige Anzahl gemeldet wird?
(Excel2007 unter Win7)
Grüße
Yosimo
Hallo Bastla,
ja wirklich simpel, schande über mich.
Wahrscheinlich bin ich nicht drauf gekommen, weil ich zu viel über die Ursache gegrübelt habe:
wenn ich ein 10-zeiliges Exceldokument habe, dann erhalte ich ohne der ersten Zeile 9 Dokumente. Nach meiner Logik also immer ein Dokument weniger als Excel Zeilen hat. Warum die MsgBox dann eine Differenz von 2 statt 1 ausgibt, will sich mir da nicht erschließen.
Aber egal, wenn ich es mit Deinem Tipp lösen kann, ist es für mich völlig ausreichend.
Vielen Dank!
Grüße
Yosimo
ja wirklich simpel, schande über mich.
Wahrscheinlich bin ich nicht drauf gekommen, weil ich zu viel über die Ursache gegrübelt habe:
wenn ich ein 10-zeiliges Exceldokument habe, dann erhalte ich ohne der ersten Zeile 9 Dokumente. Nach meiner Logik also immer ein Dokument weniger als Excel Zeilen hat. Warum die MsgBox dann eine Differenz von 2 statt 1 ausgibt, will sich mir da nicht erschließen.
Aber egal, wenn ich es mit Deinem Tipp lösen kann, ist es für mich völlig ausreichend.
Vielen Dank!
Grüße
Yosimo
Hallo Yosimo!
Grüße
bastla
wenn ich ein 10-zeiliges Exceldokument habe
Warum die MsgBox dann eine Differenz von 2 statt 1 ausgibt, will sich mir da nicht erschließen.
Es wird ja immer schon eine Zeile weitergezählt - daher sind in der Anzahl enthalten die (übersprungene) Zeile 1 und die aktuelle (leere, zumindest in Spalte A) Zeile 11 ...Warum die MsgBox dann eine Differenz von 2 statt 1 ausgibt, will sich mir da nicht erschließen.
Grüße
bastla
Hallo,
so jetzt bin ich in der Zwischenzeit wieder etwas weiter gekommen und habe noch eine Abfragebox zur exportierenden Spalte eingebaut.
An meiner nächsten Ergänzung scheitere ich aber leider schon wieder an meinen geringen VBA-Kenntnissen.
Hauptaufgabe meines Makros ist es ja, den Inhalt einer Spalte zeilenweise in Textdateien zu exportieren.
Nun möchte ich das Script gerne noch dahingehend erweitern, dass die erzeugten Dateinamen zusätzlich in eine leere Spalte ins Excelblatt zurückgeschrieben werden. Der Spaltentitel sollte auch gleich mit eingesetzt werden.
Dabei soll berücksichtigt sein, dass, wenn ab Zeile 2 exportiert wurde, auch erst ab Zeile 2 wieder die Dateinamen zurückgeschrieben werden. Es soll also der entsprechende Dateiname in seinem zugehörigen Datensatz platziert werden.
Bin dankbar, wenn mir wieder geholfen wird.
Gruß
Yosimo
so jetzt bin ich in der Zwischenzeit wieder etwas weiter gekommen und habe noch eine Abfragebox zur exportierenden Spalte eingebaut.
Sub ExportiereSpalte(control As IRibbonControl)
Ziel = ActiveWorkbook.Path & "\"
Stellen = 5
Typ = ".txt"
AbZeile = 2
On Error GoTo Fehler
Spalte = InputBox _
("Welche Spalte soll exportiert werden?")
If IsEmpty(Spalte) Then
MsgBox "Nichts eingegeben ..."
Exit Sub
End If
Zeile = AbZeile
Nr = 1000001
Set fso = CreateObject("Scripting.FileSystemObject")
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\"
Do While Cells(Zeile, Spalte).Value <> ""
fso.CreateTextFile(Ziel & Right(Nr, Stellen) & Typ).Write Cells(Zeile, Spalte).Value
Zeile = Zeile + 1
Nr = Nr + 1
Loop
MsgBox "Fertig!" & vbCrLf & "" & vbCrLf & "Aus Spalte """ & Spalte & """ wurden """ & Zeile - AbZeile & """ TXT-Dateien erzeugt."
Exit Sub
Fehler:
MsgBox "Hallo!! - Fehler!!" & vbCrLf & "" & vbCrLf & "Wohl keinen Spaltentitel eingegeben?"
End Sub
An meiner nächsten Ergänzung scheitere ich aber leider schon wieder an meinen geringen VBA-Kenntnissen.
Hauptaufgabe meines Makros ist es ja, den Inhalt einer Spalte zeilenweise in Textdateien zu exportieren.
Nun möchte ich das Script gerne noch dahingehend erweitern, dass die erzeugten Dateinamen zusätzlich in eine leere Spalte ins Excelblatt zurückgeschrieben werden. Der Spaltentitel sollte auch gleich mit eingesetzt werden.
Dabei soll berücksichtigt sein, dass, wenn ab Zeile 2 exportiert wurde, auch erst ab Zeile 2 wieder die Dateinamen zurückgeschrieben werden. Es soll also der entsprechende Dateiname in seinem zugehörigen Datensatz platziert werden.
Bin dankbar, wenn mir wieder geholfen wird.
Gruß
Yosimo
Hallo bastla,
das mit dem eigenen Thread habe ich beherzigt:
Spalte zeilenweise als Dateien rausschreiben und Dateinamen nach Excel zurückschreiben
Es tut mir leid, wenn es wegen meinen Anfragen wie ein "Hin und Her" erscheint. Aber jeder Schritt ist für mich ein wichtiger Baustein, und kein Tipp aus dem Forum war bisher vergeudet.
Ich bastle an einer Automatisierung für die Erstellung personalisierter Barcodes. Es gibt zwei Textbausteine mit PostScript-Code, die per Batch um die aus Excel exportierten Textdateien, den Barcodenummern, ergänzt und als EPS-Grafiken abgelegt werden.
Die Dateinamen dieser EPS-Dateien sollen dann in die Exceldatei zurückgeschrieben werden. Eine Personalisierungssoftware, die die Exceldatei ausliest, platziert die EPS-Grafiken und weitere Personalisierungsdaten in ein Layoutprogramm, aus dem die Auflage auf einer Digitaldruckmaschine produziert wird.
Die ganze PostScript-Programmierung steht bereits und der Workflow im ganzen läuft auch schon gut. Aber das Handling in Excel möchte ich noch verbessern.
Deine Tipps, bastla, haben mir bisher am meißten weitergeholfen. Deshalb hier mein besonderer Dank an Dich!
Gruß
Yosimo
das mit dem eigenen Thread habe ich beherzigt:
Spalte zeilenweise als Dateien rausschreiben und Dateinamen nach Excel zurückschreiben
Es tut mir leid, wenn es wegen meinen Anfragen wie ein "Hin und Her" erscheint. Aber jeder Schritt ist für mich ein wichtiger Baustein, und kein Tipp aus dem Forum war bisher vergeudet.
Ich bastle an einer Automatisierung für die Erstellung personalisierter Barcodes. Es gibt zwei Textbausteine mit PostScript-Code, die per Batch um die aus Excel exportierten Textdateien, den Barcodenummern, ergänzt und als EPS-Grafiken abgelegt werden.
Die Dateinamen dieser EPS-Dateien sollen dann in die Exceldatei zurückgeschrieben werden. Eine Personalisierungssoftware, die die Exceldatei ausliest, platziert die EPS-Grafiken und weitere Personalisierungsdaten in ein Layoutprogramm, aus dem die Auflage auf einer Digitaldruckmaschine produziert wird.
Die ganze PostScript-Programmierung steht bereits und der Workflow im ganzen läuft auch schon gut. Aber das Handling in Excel möchte ich noch verbessern.
Deine Tipps, bastla, haben mir bisher am meißten weitergeholfen. Deshalb hier mein besonderer Dank an Dich!
Gruß
Yosimo