[GastForen Programme Office Microsoft Office Wer weiß eine Lösung? csv erzeugen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Office - Alles fürs Büro
Themen
Beiträge
Moderatoren
Letzter Beitrag

Wer weiß eine Lösung? csv erzeugen

ktedo
Beiträge gesamt: 253

3. Apr 2008, 23:50
Beitrag # 1 von 8
Bewertung:
(3443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

gibt es jemand, der mir bei dieser Anforderung weiterhelfen kann und möchte. Zum Automatischen Erzeugen verschiedener csv-Dateien steht eine Excel-Datei zur Verfügung. Diese sieht so aus:


Spalte_A Spalte_B Spalte_C Spalte_D
01 Name_xyz Verz.123 ABC_.csv Wert1
02 Name_xyz Verz.123 ABC_.csv Wert2
03 Name_xyz Verz.123 ABC_.csv Wert3

04 Name_xyz Verz.000 DEF_.csv Wert1
05 Name_xyz Verz.000 DEF_.csv Wert2

06 Name_ABC Verz.000 GHI_.csv Wert1
07 Name_ABC Verz.000 GHI_.csv Wert2

08 Name_KLM Verz.777 JKL_.csv Wert1
09 Name_KLM Verz.777 JKL_.csv Wert2
10 Name_KLM Verz.777 JKL_.csv Wert3

Aufgabe:
Wenn sich der Wert in Spalte_C ändert, muss eine Datei* erzeugt werden, die den Inhalt der Spalte_D enthält.
Jeweils ein Wert in einer Zeile, fortlaufend angeordnet.

Inhalt also:

Wert1
Wert2
Wert3

*Wohl am besten mittels Texteditor***

Diese erzeugte Datei muss in einem Verzeichnis (Spalte_A / SPalte_B) gespeichert** werden.


**dabei müssen dort bestehende gleichnamige Dateien überschrieben werden.
Alle Zielverzeichnisse (Spalte_A) liegen auf der gleichen Ebene.
Die Excel liegt ebenfalls in einem der Verzeichnise der Spalte_A.


Ergebnis:

4 Dateien, bespeichert wie folgt:
Name_xyz / Verz.123 / ABC_.csv
Name_xyz / Verz.000 / DEF_.csv
Name_ABC / Verz.000 / GHI_.csv
Name_KLM / Verz.777 / JKL_.csv

..natürlich ohne Leerzeichen beim /. Die ich zugunsten der Lesbarkeit so geschrieben habe ;-)


***Beim Erzeugen einer csv aus xls heraus wird leider die jeweilige Zeile in Anführungszeichen dargestellt. Diese stören natürlich die csv. Abspeichern mittels Zwischenablage in den / einen Texteditor funktioniert.


Genügend Infos? Dann mal los - oder?
XP, Excel 2003

Ich freue mich auf jede Unterstützung
Thomas Becker
X

Wer weiß eine Lösung? csv erzeugen

farbauge
Beiträge gesamt: 844

9. Apr 2008, 14:56
Beitrag # 2 von 8
Beitrag ID: #345371
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

"dann mal los" ist gut. Das ist ja auch fast keine Arbeit ;-))

Das könnte dir jemand in VBA scripten, ist eigentlich kein Problem, aber als eine Gefälligkeit für lau doch zu viel.

Falls du dich selbst schon mal mit VBA befasst haben solltest:
den Trigger kriegst du über ein Worksheet_Change Ereignis mit
deiner Spalte als Target, den CSV-Export über "Open ... for output as ...", auch ohne Anführungszeichen in den Zeilen.

Es geht, aber wie gesagt, da steckt schon ein bisschen Arbeit drin.

Gruß

Peter


als Antwort auf: [#344629]

Wer weiß eine Lösung? csv erzeugen

ktedo
Beiträge gesamt: 253

9. Apr 2008, 20:09
Beitrag # 3 von 8
Beitrag ID: #345439
Bewertung:
(3314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter, danke für Deine Antwort.
klar bin ich davon ausgegangen, dass das nicht mal eben so zu erledigen ist. VBA sagt mir leider nichts. Kannst Du mir vielleicht jemanden Empfehlen?

Grüße, Thomas


als Antwort auf: [#345371]

Wer weiß eine Lösung? csv erzeugen

farbauge
Beiträge gesamt: 844

10. Apr 2008, 18:03
Beitrag # 4 von 8
Beitrag ID: #345650
Bewertung:
(3275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

empfehlen kann ich dir da leider niemand, ich selbst habe keine Zeit dazu.

Mein erster Beitrag hatte sich mit dem zweiten Thread von dir überschnitten (bzw. hatte ich den übersehen). Mein eigentliches Anliegen war, dich darauf hinzuweisen, dass es mit "na denn mal los" etwas unterschätzt schien, aber das war dir ja offenbar schon klar.

VBA (Visual Basic for Applications) ist die Skriptsprache (manche sagen auch Makrosprache) von MS Office, damit schreibt man sowas. Wenn du jemanden findest, der sich damit gut auskennt, ist dein Anliegen wirklich keine "Rocket Science", der Aufwand hält sich in Grenzen. Ohne deine echte Tabelle gesehen zu haben, vermute ich hier etwas im niedrigen einstelligen Stundenbereich, selbst wenn man es sauber mit ein bisschen Dokumentation macht.

Gruß

Peter


als Antwort auf: [#345439]

Wer weiß eine Lösung? csv erzeugen

MurphysLaw
Beiträge gesamt: 588

2. Mai 2008, 11:24
Beitrag # 5 von 8
Beitrag ID: #348869
Bewertung:
(3085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenn ich das richtig verstehe, dann geht es nicht drum, dass sich irgendwann ein Wert ändert, so dass das "Worksheet_Change" Ereignis abfeuert, sondern dass dur quasi nach Spalte C gruppiert CSVs erstellen willst, die eben den Namen aus Spalte C haben, im Verzeichnis [Spalte A]\[Spalte B]\, die die Werte aus Spalte D enthalten.
Richtig so?
Die Gesamttabelle besteht also bereits vollständig?

Dann brauchst Du ein anderes Makro. Wenn Du mir diese Info bestätigst, kann ich es dir in 5 Minuten hier hinkritzeln...
:P


als Antwort auf: [#344629]

Wer weiß eine Lösung? csv erzeugen

ktedo
Beiträge gesamt: 253

2. Mai 2008, 18:35
Beitrag # 6 von 8
Beitrag ID: #348923
Bewertung:
(3046 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
gutes Zitat!

Anforderung bestens verstanden und glänzend umformuliert; ja, das ist das,was ich brauche. Würde mich freuen, wenn es funktioniert.

viel Spass beim 5-Min hinkritzeln...
Grüße, Thomas


als Antwort auf: [#348869]

Wer weiß eine Lösung? csv erzeugen

MurphysLaw
Beiträge gesamt: 588

2. Mai 2008, 19:12
Beitrag # 7 von 8
Beitrag ID: #348928
Bewertung:
(3041 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Okie dokie.
Hier isses:

Code
Sub SchreibeCSVs() 
Dim fso As FileSystemObject, f As Folder
Dim a As Integer
Dim alt As String, Verz As String
Dim i As Long, maxnum As Long

maxnum = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Set fso = New FileSystemObject

alt = Range("c1").Text 'Zum Prüfen, wann Text sich ändert
i = 1
Do While i <= maxnum
'*****
'Verzeichnis prüfen, ggf. erstellen
'*****
Verz = Range("a" & i)
If Not fso.FolderExists(Verz) Then fso.CreateFolder Verz
Verz = Verz & "\" & Range("b" & i)
If Not fso.FolderExists(Verz) Then fso.CreateFolder Verz
Set f = fso.GetFolder(Verz)
'******
a = FreeFile
Open Verz & "\" & Range("c" & i) For Output As a
Do While (Range("c" & i).Text = alt)
Print #a, Range("d" & i)
i = i + 1
Loop
'So, jetzt kommer anne neue CSV
Close a
alt = Range("c" & i)
Loop


End Sub


:)

Achtung, vorher immer backups machen, gelle? :)


EDIT: Haaalt, Du musst auch im Excel-VBA-Editor auf Extras->Verweise klicken und "Microsoft Scripting Runtime" hinzufügen!
-----


als Antwort auf: [#348923]
(Dieser Beitrag wurde von MurphysLaw am 2. Mai 2008, 19:13 geändert)

Wer weiß eine Lösung? csv erzeugen

ktedo
Beiträge gesamt: 253

2. Mai 2008, 21:09
Beitrag # 8 von 8
Beitrag ID: #348937
Bewertung:
(3018 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
vielen Dank. Werde etwas brauchen um es zu testen, hab noch keine Erfahrung mit Makros in xls.
Jedenfalls vielen Dank!
Thomas


als Antwort auf: [#348928]
X