Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering

VBA kode - CSV fil til Excel

Af Monsterbruger Nismon | 11-07-2018 15:07 | 237 visninger | 8 svar, hop til seneste
Hej HOL Jeg er løbet ind i en udfordring omkring en VBA kode, dagligt får jeg en bunke CSV filer som bliver brugt til rapportering og de skal alle sammen konverteres til et excel format (XLS eller lign.). Mit problem opstår da jeg skal konvertere filerne. Da CSV filen bruger semikolon som afgrænsning og ikke komma så kan VBA koden ikke finde ud af det og i stedet for at få data splittet på kolonnerne så står data helt åndsvagt. Men hvis man åbner CSV filen på almindelig vis så er der ikke nogen problemer. Nedenstående kode fungerer til at formaterer samtlige CSV til XLS men semikolon problematikken er der stadig. Hvis der derfor er nogen som har et foreslag til hvordan jeg lige får VBA til at læse CSV filen på samme måde som hvis arket bare blev åbnet manuelt så modtager jeg det med kyshånd! Public Sub csvToxls() Dim FSO As Object Dim folder As Object Dim wb As Object csvPath = "C:\Users\Nismon\Documents\Revenue\csvFolder" xlsPath = "C:\Users\Nismon\Documents\Revenue\csvFolder" Set FSO = CreateObject("Scripting.FileSystemObject") Set csvFolder = FSO.GetFolder(csvPath) If FSO.FolderExists(xlsPath) = False Then FSO.createFolder (xlsPath) End If Set xlsFolder = FSO.GetFolder(xlsPath) With Application .DisplayAlerts = False .ScreenUpdating = False End With For Each wb In csvFolder.Files If LCase(Right(wb.Name, 3)) = "csv" Then Set activeWB = Workbooks.Open(wb, Delimiter:=Semicolon) activeWB.SaveAs Filename:=xlsPath & "\" & Left(activeWB.Name, Len(activeWB.Name) - 3) & "xlsx", FileFormat:=xlOpenXMLWorkbook activeWB.Close True End If Next With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub
--
Venlig hilsen Nismon
#1
gghvad
Juniorbruger
11-07-2018 15:13

Rapporter til Admin
Hvad med en hel simpel "find alle semikolon og erstat med komma" kode? Måske der findes en smartere løsning, men det er da et simpelt bud på problemet :)
--
#2
Nismon
Monsterbruger
11-07-2018 15:15

Rapporter til Admin
#1 Glimrende forslag! Men mit problem er at tallene har decimaler og de er med kommaer så derfor ville jeg ende med at splitte for meget hvis jeg splittede på komma :)
--
Venlig hilsen Nismon
#3
Caspian
Nørd Aspirant
11-07-2018 15:15

Rapporter til Admin
Prøv at erstatte følgende linie: Set activeWB = Workbooks.Open(wb, Delimiter:=Semicolon) med: Set activeWB = Workbooks.Open(wb, Delimiter:=";")
--
#4
Nismon
Monsterbruger
11-07-2018 15:46

Rapporter til Admin
#3 Desværre løste det, det heller ikke (ellers havde jeg fandet følt mig dum!... :)
--
Venlig hilsen Nismon
#5
Thums
Ultrabruger
11-07-2018 15:52

Rapporter til Admin
Jeg ved ikke om dette virker, men jeg så en der havde haft lignende problem og der var en som foreslog dette, der kom dog aldrig et respons tilbage.: Delimiter:= Chr(59) 59 er ";" Andre ASCII koder kan findes her: https://theasciicode.com.ar[...]
--
#6
gghvad
Juniorbruger
11-07-2018 17:15

Rapporter til Admin
Mener nu det er indbygget at man kan gemme en csv fil og så vælge hvilken slags afgrænsning der skal være. Også selvom der allerede er en.. Kan tjekke det senere :)
--
#7
upz
Ultrabruger
11-07-2018 17:50

Rapporter til Admin
Powershell, en markant bedre måde at løse dit problem på :) her er basic basic kode, der gør det du ønsker. Hvis du normalt koder, kan det her hurtigt tilpasses og gøres ret kompleks, og løse de problemer du skulle støde på. https://pastebin.com[...]
--
Sidst redigeret 11-07-2018 17:53
#8
Nismon
Monsterbruger
13-07-2018 12:03

Rapporter til Admin
#5 Desværre virkede det heller ikke men tak for foreslaget! #6 Fandt du frem til et eller andet? (Jeg krydser fingre!) #7 Jeg tager et kig på det, mange tak!
--
Venlig hilsen Nismon

Opret svar til indlægget: VBA kode - CSV fil til Excel


Dit navn:

Din e-mail adresse:


Indholdet fra billedet:
Dit svar: