26. august 2010 - 14:15Der er
10 kommentarer og 1 løsning
XML dokument skal laves til komma separeret cvs fil - HVORDAN ?
Hejsa
Forslag ønskes på LETTESTE metode :-)
Jeg har en xml fil som jeg skal have lavet om til en komma separeret .cvs fil istedet.
Hvordan kan jeg lettest gøre det? Er det muligt at lave et lille program eller en slags marcro ting som kan gøre det med 1 klik?
Lige nu henter jeg filen ind i excel og eksporterer det til en semmikolon cvs fil og skal så ind og lave en "erstat ; med ," kommando, og det er lidt bøvlet :-(
ok - marcro - vil en eller anden pleeease lave en 1-2-3 på hvordan den skal laves når jeg har en fil der hedder test.xml som skal laves til test2.cvs hvor den har gemt filen med , istedet for ;
1) VBA-koden herunder kopieres og indsættes under ark1 (Højreklik / Vis programkode)
2) Juster sti og filnavne - gem og luk
3) Koden køres - f.eks: Alt+F8 / marker Makronavnet (fraXMLtilCSV) / Afspil - eller kan forbindes med en knap.
Const xmlFilNavn = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\XML_Csv\Kostpris.xml" 'JUSTERES
Const csvFilNavn = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\XML_Csv\kommaFil.csv" 'JUSTERES
Dim antalRæk As Long, antalKol As Long Public Sub fraXMLtilCSV() sletGlIndhold indlæsXML hentDimensioner opbygCsvFil
MsgBox "Konvertering udført", vbOKOnly End Sub Private Sub sletGlIndhold() ActiveWorkbook.Sheets(1).Activate Cells.Select Selection.Delete Shift:=xlUp End Sub Private Sub indlæsXML() ActiveWorkbook.XmlImport URL:=xmlFilNavn, _ ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1") End Sub Private Sub hentDimensioner() antalRæk = ActiveCell.SpecialCells(xlLastCell).Row antalKol = ActiveCell.SpecialCells(xlLastCell).Column End Sub Private Sub opbygCsvFil() Dim ræk As Long, kol As Long, cc, linje Open csvFilNavn For Output As #1
For ræk = 1 To antalRæk linje = "" For kol = 1 To antalKol If kol < antalKol Then linje = linje + CStr(Cells(ræk, kol)) + "," Else linje = linje + CStr(Cells(ræk, kol)) Print #1, linje End If Next kol Next ræk Close #1 End Sub
hmmm jeg må hellere se mig om efter en alternativ løsning, da det vil være for omstændigt at kode hver fil, da der kommer ny fil 2 gange dagligt :-( Men tak for hjælpen alligevel.
Hanne, du kan jo skrive et program der gør det i c - c#, så det eneste du behøver er at smide filen ind i en mappe hvor der også ligger en c eller c# console app, der gør det for dig når du dobbelklikker på den...
På denne måde behøver du kun smide filen ind i mappen, og så klikke på filen, du kan evt. få den til at tage alle filerne i mappen, ud over c applikationen selv, så du kan gøre det på flere dokumenter sammetidig.
Det eneste der skal bruge er en streamreader og en streamwriter, muligvis en. Der er en replacer i c#, kan ikke huske om den er i c (tror jeg ikke)...
Hejsa Jeg prøver lige om det er muligt at få lavet et lille Delphi program som kan udføre rutinen for mig :-) http://www.eksperten.dk/spm/920486
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.