CSV Datei als normale .xls speichern per VBA

Bild

Betrifft: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 20.09.2015 19:03:59

Hallo zusammen,
ich habe das Problem, das durch die Daten der CSV-Datei nicht korrekt per VBA eingefügt werden - z.B. bei 1.200€ fügt er mir 1,20€. Deutsche/Engliche Schreibweise.
Die Lösung wäre, bevor ich die Daten kopiere und wieder einfüge, die Datei speicher als Dateitye .xls.
Ich habe jedoch schon alles versucht und bin am Ende. Ich hoffe Ihr könnt mirbei helfen.
Vielen Dank vorab.

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Sepp
Geschrieben am: 20.09.2015 19:16:56
Hallo Noureddine,
beim Import kannst du den Dezimal-Trenner und das Tausender-Trennzeichen einstellen, dann stimmen auch die Werte.

Gruß Sepp


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 20.09.2015 19:19:34
Danke für deine schnelle Antwort.
Sry wenn ich so blöd frage, aber wie meinst du das....?!?!

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Sepp
Geschrieben am: 20.09.2015 19:56:01
Hallo Noureddine,
beim Import einer csv, oder txt-Datei, kann man in den Optionen die Trennzeichen einstellen, sowohl beim händischen Import, als auch per VBA. Kann man auch mit dem Rekorder aufzeichnen.

Gruß Sepp


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 20.09.2015 19:58:19
Kannst du mir dazu netterweise ein Codebeispiel schreiben.
Damit ich eine Vorstellung dazu bekomme.
Vielen Dank.

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Sepp
Geschrieben am: 20.09.2015 20:00:20
Hallo Noureddine,
zeig mir doch besser deinen Code und vielleicht lädst du eine csv hoch zum testen.

Gruß Sepp


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 20.09.2015 20:05:30
Das würde ich gerne machen. Die Datei liegt mir momentan nicht vor. Ist für die Arbeit gedacht und ist auf dem Arbeitscomputer gespeichert. Die momentane reinfolge des Makros ist:
1. Leers Tabellenblatt öffnen
2. CSV-Datei öffnen
3. CSV Daten kopieren und in das leere Tabellenblatt einfügen
Da es ja eine CSV-Datei ist, habe ich das besagte Trennzeichenproblem.

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Sepp
Geschrieben am: 20.09.2015 20:08:22
Hallo Noureddine,
das ist mir schon klar, aber csv-Import ist immer abhängig vom genauen Format der csv, da gibt es nämlich riesige Unterschiede. Lade doch morgen eine solche csv hoch, ich schau mir das dann an, allerdings erst am Abend.

Gruß Sepp


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 20.09.2015 20:10:59
Super... vielen Dank vorab, werde ich machen.
Vielleicht kannst du mit dieser Info was anfangen.
Die CSV-Datei wird aus dem SAP System generiert!

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Christoph Zahn
Geschrieben am: 20.09.2015 23:36:01
Hallo
Habe da ja leider nicht so viel Ahnung von.
Vielleicht bringt dich das hier ja weiter.

Sub UmwandelnXLS()
 ActiveWorkbook.SaveAs Filename:="PFAD\DATEINAME.xls", FileFormat:=xlExcel8
       ActiveWorkbook.Close savechanges:=True
End Sub
Gruß Christoph

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 21.09.2015 16:54:59
Danke Zahn, leider klappt dies nicht...
So hier habe ich eine leere Datei hochgeladen. Die Datei dient nur zur CSV-Formaterkennung.
Zusätzlich habe ich meinen aktuellen Codeabschnitt hinzugefügt, wo dieses Problem vorliegt...
https://www.herber.de/bbs/user/100304.xls

    'Tabellenblatt hinzufügen und umbenennen
        Sheets.Add
        ActiveSheet.Name = "ATB 110350 - Final"
    'Datei ATB 110350 - Final öffnen, kopieren, einfügen und wieder schließen
        'On Error GoTo PfadfehlerATB110350
        Set wsZiel = ActiveWorkbook.ActiveSheet
        Set wsQuelle = Workbooks.Open "C:\Pfad. Worksheets(1)
        
    'Sobald die übertragenden Informationen aus einer CSV-Datei kommen,
    'werden falsche Daten überspielt. (. = ,)
        wsQuelle.Cells.Copy
        wsZiel.Cells.PasteSpecial
        wsQuelle.Parent.Close
        Set wsQuelle = Nothing
        Set wsZiel = Nothing


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Daniel
Geschrieben am: 21.09.2015 17:18:08
HI
eine CSV-Datei (comma-seperated-values) ist im deutschen eigentlich eine SSV (semicolon-seperated-values).
und nicht nur die Trennzeichen unterscheiden sich zwischen beiden Ländervarianten, sondern auch das Zahlenformat (CSV: Punkt als Dezimalzeichen; SSV: Komma als Dezimalzeichen)
leider unterscheidet das Betriebssystem dies nicht in der Dateiendung.
jetzt ist es so, wenn wir normal mit Excel arbeiten, weiss Excel durch die Ländereinstellung, dass die deutschen Regeln anzuwenden sind.
VBA hingegen schaut nicht auf die Länderversion, sondern verwendet immer die internationalen Regeln.
Damit auch VBA die deutschen Regeln anwendet, muss man es im SaveAs und Open explizit dazu anweisen, indem man zusätzlich den Paramter: Local:=True verwendet:

 Set wsQuelle = Workbooks.Open("C:\Pfad\Dateinname.CSV", Local:=true).Worksheets(1)
sollte man die Datei als CSV speichern wollen, dann im SaveAs genauso.
beim Speichern als Echte Exceldatei braucht man das nicht angeben, denn diese Dateien werden länderunabhängig immer im gleichen Format gespeichert.
Gruß Daniel
PS: und kleiner tip noch am rande:
bei SaveAs kann man die Dateierweiterung weg lassen. Die vergibt Excel automatisch passend zum gewählten Dateityp:
ActiveWorkbook.SaveAs Filename:="PFAD\DATEINAME", FileFormat:=xlExcel8


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Sepp
Geschrieben am: 21.09.2015 19:04:53
Hallo Noureddine,
ich dachte eher, dass du die csv importierst und nicht in Excel öffnest.
Klappt der Tipp von Daniel?
Ansonsten wäre die pure csv-Datei hilfreich, vor dem Hochladen in .txt umbenennen, weil die Forumssoftware csv's nicht akzeptiert.

Gruß Sepp


Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 21.09.2015 19:47:47
ich werde es morgen mal ausprobieren, ich hoffe das es klappt denn ich sitz schon länger daran fest.
Ne, soll kein inport werden nur copy and paste auf eine anderes Tabellenblatt. Wie im Quellcode oben angegeben.
Mein anders Problem... hier habe ich bereits ein ein Betrag verfasst.
Ich will die Dateiendung von xlsx auf xls umwandeln, das klappt soweit. Jedoch möchte ich den Programm noch sagen, wenn beriets xls tu nichts ansonsten ändern auf xlsx.
Ich arbeite mit dem Code


Name PFAD.xlsx as PFAD.xls
Kann mir da auch jemand noch weiterhelfen.
Vielen Dank vorab.

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Daniel
Geschrieben am: 21.09.2015 20:38:05
Hi
Name PFAD.xlsx as PFAD.xls
ist Nonsense.
durch die Umbenennung findet keine Umwandlung der Datei statt.
die xlsx bleibt eine xlsx, auch wenn du sie umbenennst (genau so, wie Max Mustermann nicht zur Frau wird, wenn er sich "Clara Musterfrau" in den Ausweis eintragen lässt).
das Problem ist nur , dass Excel dann beim Öffnen der Datei diese für eine xls hält, obwohl sie keine xls ist und dann das falsche Regelwerk zum Öffen anwendet, dh Übertragung von der Festplatte in den Hauptsprecher erfolgt dann wie eine Übersetzung vom Englischen ins Deutsche mit Hilfe eines Französch-Wörterbuchs.
Gruß Daniel

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 21.09.2015 23:13:40
Das ist mir klar, jedoch benötige ich dies trotzdem. Könnest du mir den so ein Code zusammenstellen. Ich wäre dir dafür sehr dankbar.

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Daniel
Geschrieben am: 21.09.2015 23:20:51
Hi
wenn du schauen willst, ob du die Datei schon umbenannt hast, kannst du die DIR-Funktion verwenden:
zuerst prüfst du , ob die Datei in der xlsx-Version vorhanden ist und dann, ob sie in der xls-Version fehlt, wenn die abgefragte Datei vorhanden ist, gibt die DIR-Funktion den Dateinamen (ohne Pfad) zurück, wenn sie nicht vorhanden ist den Leerstring:

If Dir("pfad\Datei.xlsx") <> "" Then 
    If Dir("pfad\Datei.xls") = "" Then 
         Name "pfad\Datei.xlsx" as "pfad\Datei.xls
    end if
end if
Gruß Daniel

Bild

Betrifft: AW: CSV Datei als normale .xls speichern per VBA
von: Noureddine
Geschrieben am: 22.09.2015 17:49:37
Super, ich konnts heute testen und beides hat wie gewünscht geklappt.
Vielen Dank Daniel und Sepp. Ihr habt mir viel Zeit und nerven gespart.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "CSV Datei als normale .xls speichern per VBA"