[Excel 2003] Modifikation eines VBA-Codes

Lasersword

Cadet 4th Year
Registriert
Jan. 2008
Beiträge
123
Hallo CBler,

ich stehe hier vor einem Problem, welches ich nicht gelöst bekomme.

Ich habe eine Excel-Tabelle, welches ich als csv-Datei speichern möchte (Hatte dazu hier auch schon mal was geschrieben).

Mein Problem ist jetzt, dass es in der Datei Zahlen-, Datums- und Textwerte gibt.
Datums- und Textwerte müssen mit Anführungsstrichen übernommen werden und Zahlen ohne.

Speichere ich die Excel-Tabelle jetzt als CSV-Datei, werden aus einem Anführungszeichen gleich 3.
Habe auch gegoogelt und was gefunden:

Code:
Sub CSV_erste_Zeile()
  '1. Zeile Spalte 1 bis 4 im aktiven Tabellenblatt in eine CSV/Text-Datei schreiben
  Dim sCSV_Datei As Variant, wks As Worksheet
  Dim Spalte As Long, Zeile As Long, FF As Integer
  Dim sText As String
  Const sSep As String = "," 'Trennzeichen
  'Dateiname CSV-Datei
  sCSV_Datei = Application.GetSaveAsFilename(InitialFileName:="CSV_Shape", _
      Filefilter:="CSV-Text(*.csv;*.txt),*.csv;*.txt", _
      Title:="Bitte Namen der CSV/Text-Datei eingeben/auswählen")
  If sCSV_Datei = False Then Exit Sub
  Set wks = ActiveSheet
  Zeile = 1
  FF = FreeFile()
  Open sCSV_Datei For Output As FF
  With wks
    For Spalte = 1 To 4
      Select Case Spalte
        Case 1
          sText = .Cells(Zeile, 1).Text
        Case Else
          sText = sText & sSep & .Cells(Zeile, Spalte).Text 
      End Select
    Next Spalte
    Print #FF, sText
  End With
  Close FF
End Sub

Das Makro funktioniert auch wunderbar, allerdings bräuchte ich eine kleine Modifikation.

Ich will nicht, dass ein "InitialFileName" vergeben wird, sondern den Dateinamen fest hinterlegen, ohne dass der User ein Chance hat, diesen zu ändern.

Nutze ich nur den Saveas-Befehl, klappt das nicht.
Aber aus Erfahrung weiß ich, dass das funktionieren muss, weiß halt (wie immer ;) ) nur nicht wie :D

Danke für eure Hilfe.

Gruß,

Lasersword
 
Moin Lasersword,

ungeprüft, aber das sollte funktionieren:
Code:
Sub CSV_erste_Zeile()
  '1. Zeile Spalte 1 bis 4 im aktiven Tabellenblatt in eine CSV/Text-Datei schreiben
  Dim sCSV_Datei As Variant, wks As Worksheet
  Dim Spalte As Long, Zeile As Long, FF As Integer
  Dim sText As String
  Const sSep As String = "," 'Trennzeichen
  'Dateiname CSV-Datei
  'sCSV_Datei = Application.GetSaveAsFilename(InitialFileName:="CSV_Shape", _
      Filefilter:="CSV-Text(*.csv;*.txt),*.csv;*.txt", _
      Title:="Bitte Namen der CSV/Text-Datei eingeben/auswählen")
  'If sCSV_Datei = False Then Exit Sub
  sCSV_Date = "C:\Data\MeinDateiName.csv"
  Set wks = ActiveSheet
  Zeile = 1
  FF = FreeFile()
  Open sCSV_Datei For Output As FF
  With wks
    For Spalte = 1 To 4
      Select Case Spalte
        Case 1
          sText = .Cells(Zeile, 1).Text
        Case Else
          sText = sText & sSep & .Cells(Zeile, Spalte).Text 
      End Select
    Next Spalte
    Print #FF, sText
  End With
  Close FF
End Sub
Die auskommentierten Zeilen kannst du natürlich löschen!
 
Guten Morgen Cpt.,

manchmal ist die Lösung so einfach.

Hab aber noch ein "i" an "sCSV_Date" ergänzen müssen ;),
aber dann klappt es genauso wie es sollte.

Vielen Dank.

Gruß,

Lasersword
 
Dande für's Feedback, Lasersword,

ich habe wieder einmal gemerkt, dass copy'n paste zu später Stunde und ohne Brille doch zu Fehlern führen kann :evillol:.
 
Zurück
Oben