Microsoft Excel

Herbers Excel/VBA-Archiv

Per Makro in csv oder txt Abspeichern.

Betrifft: Per Makro in csv oder txt Abspeichern. von: Dennis
Geschrieben am: 21.04.2014 23:32:24

Hallo,

Ich habe eine Mac Version (Excel 2011), was aber nicht zu dem Problem führen sollte, dass ich habe.
Ich habe zwei excel Tabellen mit verschiedenem vba Code.
Das erste soll von der ersten Seite die Daten per csv speichern.
Das zweite soll diese csv importieren.
Beide excel Tabellen funktionieren separat und getrennt von einander.

Ich habe vorhin von der ersten Tabelle manuell, speichern unter und tabulatorgetrennt ausgewählt.
Das konnte ich in der 2. Tabelle via Daten - Text importieren.
Alles soweit so gut.

Nun habe ich den Speicher Vorgang von der 1. Tabelle aufgezeichnet, um mir den Code anzuschauen.
Dann habe ich einen Button hinzugefügt, das Makro (ohne es zu ändern) dem Button zugewiesen und den Button geklickt.

Raus kam zwar auch eine csv Datei, aber die sah vom Inhalt anders aus.
Z.b. Das Datum. Beim manuellen Speichern kam das Format tt.mm.jj, via Makro kommt mm/tt/jj,
Beim importieren sieht es auch komplett anders aus, nicht zu beschreiben, merkwürdige Zeichen.

Habt ihr eine Erklärung, woran das liegt!?
Fehlt ein Argument bei vba, was beim Aufzeichnen weggelassen wurde?

Vielen Dank.

  

Betrifft: AW: Per Makro in csv oder txt Abspeichern. von: Tino
Geschrieben am: 22.04.2014 10:57:15

Hallo,
ich habe kein Mac und kann nur einen Vorschlag zum testen geben.
Oder Du änderst Systemweit die Einstellung fürs Datumsformat, was meist nicht umsetzbar ist.

Sub test()
    SaveCSV Tabelle1.Range("A1:C10"), ";", "C:\Ordner\MeineCSV.csv"
End Sub

Sub SaveCSV(ByVal rngBereich As Range, ByVal strDelimiter$, ByVal sSavePath$)
Dim n&
Dim strText$
Dim F%
Dim varData

If Dir(sSavePath, vbNormal) <> "" Then
    Kill sSavePath
End If

F = FreeFile
Open sSavePath For Append As #F
For Each rngBereich In rngBereich.Areas
    If rngBereich.Cells.Count = 1 Then
        varData = rngBereich.Resize(, 2).Value
        ReDim Preserve varData(1 To UBound(varData), 1 To 1)
    Else
        varData = rngBereich.Value
    End If

    For n = 1 To UBound(varData)
        strText = Join(Application.Index(varData, n), strDelimiter)
        Print #F, strText
    Next n
Next rngBereich

Close #F
End Sub
Gruß Tino


  

Betrifft: AW: Per Makro in csv oder txt Abspeichern. von: zesa_suzuki@live.de
Geschrieben am: 22.04.2014 14:15:23

Klappt leider nicht .
Es kommt die Meldung Objekt erforderlich und die Zeile mit SaveCSV Tabelle1.Range wird markiert.
Ich habe natürlich die Tabelle entsprechend angepasst.

In der Zwischenzeit habe ich aber herausgefunden, dass man bei bestimmten Exports. z.B. Windows Text es beim Importieren so einstellen kann, dass man beim Importvorgang sagt, was die Dezimalzeichen sind.

Damit wäre das Problem also doch behoben,
da die Englische Datumsanzeige aber noch Probleme macht, macht mir gerade die Umwandlung von MM/TT/YY in TT.MM.YY Probleme =(


  

Betrifft: AW: Per Makro in csv oder txt Abspeichern. von: Tino
Geschrieben am: 22.04.2014 16:25:37

Hallo,
kannst Du mal ein Beispiel Hochladen, wo dieser Code an dieser Stelle hängen bleibt?

Gruß Tino