PDA

Vollständige Version anzeigen : einzelne Spalten in CSV-Datei exportieren


teccrow
21.02.2008, 10:56
Hallo,

es existiert ein Excelsheet mit ca. 100 Spalten und ca. 1000 Zeilen. Diese Übersichtsliste lebt ständig. Für eine Auswertung habe ich nun eine SQL-Datenbank online erstellt, die nun regelmäßig aktualisiert werden muss. Über eine Upload-Funktion kann eine CSV-Datei hochgeladen werden und dabei wird die DB aktualisiert. Da in der DB nicht alle Spalten, aber alle Zeilen genutzt werden, möchte ich nun im Excel ein VBA-Modul erstellen, welches folgende Aufgaben hat:


Die festgelegten Spalten sollen im CSV-Format in einer Datei gespeichert werden.
Der Speicherort der CSV-Datei soll wählbar sein.


Ich habe bei der Realisierung über die Funktion "Makro aufzeichnen" schon einiges versucht, komme aber zu keinem aktzeptablen Ergebnis.

Ich hoffe Ihr könnt mir weiterhelfen. Danke schon mal im Voraus.

Teccrow

IngGi
21.02.2008, 13:15
Hallo Teccrow,

versuch's mal hiermit (Die Funktion GetOrdner ist nicht auf meinem Mist gewachsen, sondern stammt aus derm Herber-Forum):
<FONT Color=Black FACE="Courier New,FixedSys" Size=2>
<Blockquote>
<FONT COLOR=#0000FF>Sub</FONT>&nbsp;SpeichernCSV()

<FONT COLOR=#0000FF>Dim</FONT>&nbsp;varSpalten
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;intSpalte&nbsp;<FONT COLOR=#0000FF>As&nbsp;Integer</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;objQuellblatt&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;Worksheet
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;objZielblatt&nbsp;<FONT COLOR=#0000FF>As</FONT>&nbsp;Worksheet
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;strPfad&nbsp;<FONT COLOR=#0000FF>As&nbsp;String</FONT>

<FONT COLOR=#008000>'Datenquelle&nbsp;festlegen</FONT>
<FONT COLOR=#0000FF>Set</FONT>&nbsp;objQuellblatt&nbsp;=&nbsp;ThisWorkbook.Sheets("Tabellenname")
<FONT COLOR=#008000>'Neues&nbsp;Tabellenblatt&nbsp;zum&nbsp;Auslagern&nbsp;(in&nbsp;Kopie)&nbsp;der&nbsp;zu&nbsp;speichernden&nbsp;Spalten</FONT>
<FONT COLOR=#0000FF>Set</FONT>&nbsp;objZielblatt&nbsp;=&nbsp;ThisWorkbook.Worksheets.Add

varSpalten&nbsp;=&nbsp;Array("A",&nbsp;"C",&nbsp;"F",&nbsp;"H")&nbsp;<FONT COLOR=#008000>'zu&nbsp;speichernde&nbsp;Spalten&nbsp;in&nbsp;Kopierreihenfolge</FONT>
<FONT COLOR=#0000FF>For</FONT>&nbsp;intSpalte&nbsp;=&nbsp;0&nbsp;<FONT COLOR=#0000FF>To&nbsp;UBound</FONT>(varSpalten)
&nbsp;&nbsp;<FONT COLOR=#008000>'Zu&nbsp;speichernde&nbsp;Spalten&nbsp;in&nbsp;neues&nbsp;Tabellenblatt&nbsp;kopieren</FONT>
&nbsp;&nbsp;objQuellblatt.Cells(1,&nbsp;varSpalten(intSpalte)).EntireColumn.Copy&nbsp;_
&nbsp;&nbsp;&nbsp;&nbsp;Destination:=objZielblatt.Cells(1,&nbsp;Columns.Count).End(xlToLeft).Offset(0,&nbsp;1)
<FONT COLOR=#0000FF>Next</FONT>&nbsp;<FONT COLOR=#008000>'intSpalte</FONT>
<FONT COLOR=#008000>'Erste&nbsp;Spalte&nbsp;bleibt&nbsp;beim&nbsp;Kopieren&nbsp;leer&nbsp;-&nbsp;l&ouml;schen</FONT>
objZielblatt.Columns(1).Delete

<FONT COLOR=#008000>'Tabellenblatt&nbsp;mit&nbsp;den&nbsp;zu&nbsp;speichernden&nbsp;Spalten&nbsp;in&nbsp;neue&nbsp;Arbeitsmappe&nbsp;schieben</FONT>
objZielblatt.Move

<FONT COLOR=#008000>'Speicherort&nbsp;abfragen</FONT>
strPfad&nbsp;=&nbsp;GetOrdner()
<FONT COLOR=#008000>'Erzeugte&nbsp;Arbeitsmappe&nbsp;als&nbsp;CSV&nbsp;speichern</FONT>
ActiveWorkbook.SaveAs&nbsp;strPfad&nbsp;&amp;&nbsp;"\"&nbsp;&amp;&nbsp;"Dateiname.csv",&nbsp;FileFormat:=xlCSV,&nbsp;Local:=<FONT COLOR=#0000FF>True</FONT>

<FONT COLOR=#0000FF>End&nbsp;Sub</FONT>

<FONT COLOR=#0000FF>Function</FONT>&nbsp;GetOrdner(<FONT COLOR=#0000FF>Optional&nbsp;ByVal</FONT>&nbsp;def&nbsp;=&nbsp;"")&nbsp;<FONT COLOR=#0000FF>As&nbsp;String</FONT>

<FONT COLOR=#0000FF>Dim</FONT>&nbsp;objShell&nbsp;<FONT COLOR=#0000FF>As&nbsp;Object</FONT>
<FONT COLOR=#0000FF>Dim</FONT>&nbsp;objFolder&nbsp;<FONT COLOR=#0000FF>As&nbsp;Object</FONT>

<FONT COLOR=#0000FF>Set</FONT>&nbsp;objShell&nbsp;=&nbsp;CreateObject("Shell.Application")
<FONT COLOR=#0000FF>Set</FONT>&nbsp;objFolder&nbsp;=&nbsp;objShell.BrowseForFolder(0,&nbsp;"Bitte&nbsp;einen&nbsp;Ordner&nbsp;w&auml;hlen",&nbsp;0,&nbsp;def)

<FONT COLOR=#0000FF>If</FONT>&nbsp;objFolder&nbsp;<FONT COLOR=#0000FF>Is&nbsp;Nothing&nbsp;Then&nbsp;Exit&nbsp;Function</FONT>
GetOrdner&nbsp;=&nbsp;objFolder.Self.Path

<FONT COLOR=#0000FF>End&nbsp;Function</FONT>

<FONT Size=2>
<p>Code eingefügt mit <b><a href="http://rtsoftwaredevelopment.de" target="_blank">Syntaxhighlighter 4.14</a></b></FONT></p>
</Blockquote><FONT FACE="Arial,FixedSys"Size=2>Gruß Ingolf

teccrow
21.02.2008, 13:30
Hallo,

super! Auf den ersten Blick sieht das schon sehr gut aus.

Die erste Zeile ist eine Überschriftenzeile. Ist es möglich die Überschriftenzeile nicht zu exportieren?

Vielen Dank
teccrow