Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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

Bestimmte Spalten in csv-Datei schreiben/exportier

Bestimmte Spalten in csv-Datei schreiben/exportier
18.09.2014 10:48:42
Ingo
Hallo
Ich habe eine Excel-Tabelle.
In dieser Tabelle nehme ich immer wieder Änderungen an den Einträgen vor.
Ich möchte gerne ein Makro erstellen, mit dem ich quasi "auf Knopfdruck" die Werte meiner Tabelle in eine csv-Datei schreiben kann.
Dabei soll aber folgendes bedacht werden:
* Trennzeichen soll sein Semikolon
* Nur die Werte bestimmter Spalten sollen in die csv-date geschrieben werden.
* Die entsprechenden Spalten (z.B. B,C,F,K,Y,Z) sollen direkt irgendwo in dem VBA-Script eingetragen werden.
Ich brauche also beim Start des Makros keine Abfragen oder sowas.
Mittels Google-Suche habe ich das folgende Script gefunden:
Sub Produktdatei()
Dim varSpalten
Dim intSpalte As Integer
Dim objQuellblatt As Worksheet
Dim objZielblatt As Worksheet
Dim strPfad As String
'Datenquelle festlegen
Set objQuellblatt = ThisWorkbook.Sheets("Angebot")
'Neues Tabellenblatt zum Auslagern (in Kopie) der zu speichernden Spalten
Set objZielblatt = ThisWorkbook.Worksheets.Add
varSpalten = Array("B", "C", "D", "E", "F", "I", "O", "Y", "Z") 'zu speichernde Spalten in  _
Kopierreihenfolge
For intSpalte = 0 To UBound(varSpalten)
'Zu speichernde Spalten in neues Tabellenblatt kopieren
objQuellblatt.Cells(1, varSpalten(intSpalte)).EntireColumn.Copy _
Destination:=objZielblatt.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1)
Next 'intSpalte
'Erste Spalte bleibt beim Kopieren leer - löschen
objZielblatt.Columns(1).Delete
'Tabellenblatt mit den zu speichernden Spalten in neue Arbeitsmappe schieben
objZielblatt.Move
'Speicherort abfragen
strPfad = GetOrdner()
'Erzeugte Arbeitsmappe als CSV speichern
ActiveWorkbook.SaveAs strPfad & "\" & "Dateiname.csv", FileFormat:=xlCSV, Local:=True
End Sub

Function GetOrdner(Optional ByVal def = "") As String
Dim objShell As Object
Dim objFolder As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Bitte einen Ordner wählen", 0, def)
If objFolder Is Nothing Then Exit Function
GetOrdner = objFolder.Self.Path
End Function

Wenn ich das nun richtig sehe, geht das Script den Weg über ein zusätzliches Tabellenblatt, in das die gewünschten Spalten kopier und dann erst in die csv-Datei geschrieben werden.
Des Weiteren fragt dieses Script ja noch nach dem Speicherort.
Beides brauche ich eigentlich nicht.
Gibt es nicht ein einfacheres Script, welche nicht dem "Umweg" über ein zusätzilches Tabellenblatt geht?
Über Eur Hilfe würde ich mich wirklich riesig freuen.
Gruß
Ingo

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Spalten in csv-Datei schreiben/exportier
18.09.2014 11:17:45
Rudi
Hallo,
Sub Produktdatei()
Dim varSpalten
Dim intSpalte As Integer, lngZeile As Long
Dim objQuellblatt As Worksheet
Dim objZielblatt As Worksheet
Dim strPfad As String
Dim varTmp, strOut As String
Open "c:\test\dateiname.csv" For Output As #1  'anpassen
'Datenquelle festlegen
Set objQuellblatt = ThisWorkbook.Sheets("Angebot")
varSpalten = Array(2, 3, 4, 5, 6, 9, 15, 25, 26)
varTmp = objQuellblatt.UsedRange
For lngZeile = 1 To UBound(varTmp)
strOut = ""
For intSpalte = 0 To UBound(varSpalten)
strOut = strOut & ";" & varTmp(lngZeile, varSpalten(intSpalte))
Next intSpalte
strOut = Mid(strOut, 2)
Print #1, strOut
Next lngZeile
Close #1
End Sub

Gruß
Rudi

Anzeige
AW: Bestimmte Spalten in csv-Datei schreiben/exportier
18.09.2014 12:09:52
Ingo
Hallo Rudi
Vielen lieben Dank für Deine Hilfe.
Dein Code funktioniert auf Anhieb prima.
Ich freue mich wirklich sehr darüber.
Ein kelines Hoppala habe ich allerdings noch.
In meiner Tabelle sind zur Zeit 601 Zeilen mit Werten gefüllt.
Diese werden auch alle in die csv-Datei geschrieben.
Aber es werden noch weitere ca 90 Zeilen ind die csv-Datei geschrieben.
Diese weiteren 90 Zeilen in der csv-Datei einhalten keine Werte, sondern nur die Trennzeichen (";").
Ich habe die Vermutung, dass es daran liegen könnte, dass ich in 2 Spalten Formeln stehen habe.
Wie kann ich das denn am besten lösen?
Ist folgende Idee sinnvoll?
* Dein Code schreibt nur dann die Werte der entsprechenden Spalten in die csv-Datei, wenn in Spalte B auch jeweils ein Wert steht.
Gruß
Ingo

Anzeige
AW: Bestimmte Spalten in csv-Datei schreiben/exportier
18.09.2014 12:44:17
Rudi
Hallo,
kann man so machen.
Sub Produktdatei()
Dim varSpalten
Dim intSpalte As Integer, lngZeile As Long
Dim objQuellblatt As Worksheet
Dim objZielblatt As Worksheet
Dim strPfad As String
Dim varTmp, strOut As String
Open "c:\test\dateiname.csv" For Output As #1  'anpassen
'Datenquelle festlegen
Set objQuellblatt = ThisWorkbook.Sheets("Angebot")
varSpalten = Array(2, 3, 4, 5, 6, 9, 15, 25, 26)
varTmp = objQuellblatt.UsedRange
For lngZeile = 1 To UBound(varTmp)
strOut = ""
If Len(varTmp(lngZeile, varSpalten(0))) > 0 Then
For intSpalte = 0 To UBound(varSpalten)
strOut = strOut & ";" & varTmp(lngZeile, varSpalten(intSpalte))
Next intSpalte
strOut = Mid(strOut, 2)
Print #1, strOut
End If
Next lngZeile
Close #1
End Sub

Gruß
Rudi

Anzeige
AW: Bestimmte Spalten in csv-Datei schreiben/exportier
18.09.2014 12:54:53
Ingo
Hallo Rudi
Großartig?
Ich bin happy voll und ganz.
Danke!
Gruß
Ingo

41 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige