Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CSV Datei als normale .xls speichern per VBA

CSV Datei als normale .xls speichern per VBA
20.09.2015 19:03:59
Noureddine
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.

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV Datei als normale .xls speichern per VBA
20.09.2015 19:16:56
Sepp
Hallo Noureddine,
beim Import kannst du den Dezimal-Trenner und das Tausender-Trennzeichen einstellen, dann stimmen auch die Werte.
Gruß Sepp

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

AW: CSV Datei als normale .xls speichern per VBA
20.09.2015 19:56:01
Sepp
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

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

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

AW: CSV Datei als normale .xls speichern per VBA
20.09.2015 20:05:30
Noureddine
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.

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
20.09.2015 20:08:22
Sepp
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

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

AW: CSV Datei als normale .xls speichern per VBA
20.09.2015 23:36:01
Christoph
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

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 16:54:59
Noureddine
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...

Die Datei https://www.herber.de/bbs/user/100304.xls wurde aus Datenschutzgründen gelöscht


    '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

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 17:18:08
Daniel
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

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 19:04:53
Sepp
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

AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 19:47:47
Noureddine
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.

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 20:38:05
Daniel
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

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 23:13:40
Noureddine
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.

AW: CSV Datei als normale .xls speichern per VBA
21.09.2015 23:20:51
Daniel
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

Anzeige
AW: CSV Datei als normale .xls speichern per VBA
22.09.2015 17:49:37
Noureddine
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.

130 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige