AW: Nun nur noch das Problem mit den Anführungszei
30.07.2007 08:58:05
Kasimir
Hallo Rainer,
danke Dir für Deine Antwort. Jetzt habe ich verstanden, was Du gemeint hast. Das Problem an dem Makro ist halt nur, dass die CSV-Datei geschlossen sein muss, da ansonsten der Zugriff verweigert wird. Ich behelfe mir da jetzt etwas anders. Ist zwar nicht ganz so, wie ich dachte, aber ich mache es im Moment jetzt wie folgt:
Ich lese beim Öffnen meiner Datei die CSV-Datei in meine Exceldatei ein und schließe die CSV-Datei gleich wieder. Danach mache ich meine Änderungen oder Neueinträge. Wenn ich das erledigt habe, werden die Daten wieder zurück in die CSV-Datei geschrieben. Ist zwar etwas umständlich, funktioniert aber. Nachfolgend mal beide Makros zum Einlesen und Exportieren, für die, die es interessiert.
Option Explicit
Public Const Datei_KFZ = "KFZ_Auflistung.csv"
Public Const Datei_Hersteller = "Hersteller_Auflistung.csv"
Public Const Datei_Cardatenbank = "Cardatenbank.csv"
Public Const Datei_Karosserie = "Karosserie_Auflistung.csv"
Public Const Datei_Allgemeine_Auflistungen = "Allgemeine_Auflistungen.csv"
Sub CSVopen()
Dim Pfad As String, Pfad_Datenbanken As String
Dim wks_Datenbank As Worksheet
Dim i As Integer
Application.ScreenUpdating = False
Pfad = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Herstellerdaten\"
Pfad_Datenbanken = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Datenbanken\"
Set wks_Datenbank = ThisWorkbook.Worksheets("Cardatenbank")
GetObject (Pfad & Datei_KFZ)
GetObject (Pfad & Datei_Hersteller)
GetObject (Pfad_Datenbanken & Datei_Cardatenbank)
GetObject (Pfad & Datei_Karosserie)
GetObject (Pfad & Datei_Allgemeine_Auflistungen)
Workbooks("Cardatenbank.csv").Sheets(1).Cells.Copy wks_Datenbank.Range("A1")
'Zellen aufbereiten
With wks_Datenbank
For i = 1 To .UsedRange.Rows.Count
.Cells(i, 2) = """" & .Cells(i, 2) & """"
.Cells(i, 3) = """" & .Cells(i, 3) & """"
.Cells(i, 4) = """" & .Cells(i, 4) & """"
.Cells(i, 5) = """" & .Cells(i, 5) & """"
.Cells(i, 7).NumberFormat = "00"".""0000"
.Cells(i, 8).NumberFormat = "00"".""0000"
.Cells(i, 9).NumberFormat = "00"".""0000"
.Cells(i, 17) = """" & .Cells(i, 17) & """"
.Cells(i, 25) = """" & .Cells(i, 25) & """"
.Cells(i, 26) = """" & .Cells(i, 26) & """"
.Cells(i, 29) = """" & .Cells(i, 29) & """"
Next
End With
With Workbooks("Cardatenbank.csv")
.Close
End With
End Sub
Sub CSVExport()
Dim Exportfile As String
Exportfile = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Datenbanken\" & " _
Cardatenbank.csv"
ExportDatei = FreeFile
Set wkb_Datenbank = ThisWorkbook.Worksheets("Cardatenbank")
Open Exportfile For Output As #ExportDatei
For iRow = 1 To wkb_Datenbank.UsedRange.Rows.Count
For iCol = 1 To wkb_Datenbank.UsedRange.Columns.Count
sTxt = sTxt & CStr(wkb_Datenbank.Cells(iRow, iCol).Text) & ";"
Next iCol
sTxt = Left(sTxt, Len(sTxt) - 1)
Print #ExportDatei, sTxt
sTxt = ""
Next iRow
Close #ExportDatei
End Sub
Ich kennzeichne den Beitrag nochmal als offen, für den Fall, dass doch noch jemand eine Möglichkeit sieht, mein Problem mit den Anführungszeichen zu lösen.
Ansonsten nochmal danke Rainer für die Unterstützung.
Gruß,
Kasimir