Het opgeven van een Scheidingsteken bij het opslaan van een CSV-bestand in een Macro

12/02/2010 by admin

Bij het aanmaken van een CSV-bestand met behulp van de menu's om een ​​werkblad te exporteren, Arkadiusz merkte op dat hij kan aangeven dat hij wil een puntkomma (;) als veldscheidingsteken. Echter, als hij een CSV-bestand met behulp van een macro bespaart (FileFormat: = xlCSV of xlCSVWindows), dan kan hij niet een puntkomma als scheidingsteken opgeven.

Dit werkt op deze manier door het ontwerp in VBA. De Excel uitvoering van de export routines voor VBA altijd gebruiken wat de regionale instellingen van Windows zijn om te bepalen hoe items in een CSV moeten worden gescheiden. Specifiek, de routine kijkt naar de lijst Separator veld voor de begrenzer. Dit betekent dat u kunt, indien gewenst, verandert het scheidingsteken een puntkomma door het veranderen van de Lijst Separator instelling in uw regionale configuratie-instellingen.

Als u niet wilt dat de regionale instellingen te wijzigen, dan kunt u in plaats daarvan schrijf uw eigen macro dat zal de uitgang van het bestand op welke manier u wenst. Overwegen, voor een moment, de volgende macro, die zal de uitgang van het bestand:

Sub CreateFile ()
FName = ActiveWorkbook.Name
Als Right (FName, 4) = ".xls" Dan
FName = Mid (FName, 1, Len (FName) - 4)
End If

Kolommen (1) .Gebruik Shift: = xlToRight

Voor i = 1 To Range ("B65000"). End (xlUp) .Row
TempString = ""
Voor j = 2 Om Range ("HA1"). End (xlToLeft) .Column
Als j <> Range ("HA1"). End (xlToLeft) .Column Dan
TempString = TempString & _
Cellen (i, j) .Value & ";"
Anders
TempString = TempString & _
Cellen (i, j) .Value
End If
Volgende
Cells (i, 1) .Value = TempString
Volgende

Kolommen (1) .Selecteer
Selection.Copy
Workbooks.Add
Range ("A1"). Selecteer
ActiveSheet.Paste
Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename: = FName & ".txt", _
FileFormat: = xlPrinter
End Sub

Dit macro neemt een unieke benadering van het maken van de output file. Wat het doet is om een ​​kolom aan de linkerkant van uw werkblad in te voegen, en aaneengeschakeld alle gegevens aan de rechterkant van die kolom in de nieuw ingevoegde kolom A. Het voegt een puntkomma tussen elk veld dan. Zodra dat gebeurd is, het grijpt de informatie die het in kolom A te zetten en schrijft het in een nieuwe werkmap. Dit werkboek wordt vervolgens op de harde schijf opgeslagen met behulp van de xlPrinter bestandsformaat, wat betekent dat ervan wordt gemaakt uit "as is" zonder enige wijziging dan ook.

Als u liever een meer directe benadering, het schrijven van de informatie rechtstreeks naar een bestand zonder het maken van wijzigingen in uw werkblad, neem een ​​kijkje op de macro op dit blog post:

http://www.dicks-blog.com/archives/2004/11/09/roll-your-own-csv/

De macro wordt komma tussen elk veld, maar kan eenvoudig worden aangepast zodat het gebruikt puntkomma plaats.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (3232) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vinden hier: opgeven Scheidingsteken bij het opslaan van een CSV-bestand in een Macro.

Related Posts