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