Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save semi-colon delimited csv file using VBA?

Tags:

excel

vba

I copy data into a spreadsheet, use VBA to format it, then save that sheet into a CSV file.

I use the following code:

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV

ws is the worksheet that I saved.

This gives me a comma-delimited CSV file.

I would like to save that sheet into a semicolon-delimited file.

I found the following:

  1. Go to Start>Settings>Regional And Language Options
  2. Click on the Customize button
  3. Next to List Separator type in a semi-colon (;)

I followed the procedure above and changed my code to:

ws.SaveAs Filename:=filestr, Fileformat:=xlCSV, Local:=True

I still get a comma-delimited CSV file as output.

I am using Excel 2003 and my OS is Windows XP.

like image 686
user1758952 Avatar asked Nov 21 '12 15:11

user1758952


People also ask

Can CSV be delimited by semicolon?

Depending on your Excel's regional setting, your default delimiter/separator may either be using semicolons (;) or commas (,) to separate items in a CSV file.


2 Answers

i've just checked this because had same problem. Filename has no functionality in this case.

This is what worked for me:

With ActiveWorkbook
    .SaveAs Filename:="My File.csv", FileFormat:=xlCSV, Local:=True
    .Close False
End With

In regional settings -> ; <- as list separator. It is also important not to save changes when closing -> with Close you have to use False.

like image 59
user2726096 Avatar answered Sep 21 '22 12:09

user2726096


To use vbs script following construction succeded:

.SaveAs Filename, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1

where arguments are:

Object Filename,
Object FileFormat,
Object Password,
Object WriteResPassword,
Object ReadOnlyRecommended,
Object CreateBackup,
XlSaveAsAccessMode AccessMode,
Object ConflictResolution,
Object AddToMru,
Object TextCodepage,
Object TextVisualLayout,
Object Local

SourceLink : https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.workbook.saveas.aspx

Last "1" in "SaveAs" function is equal to Local=True

Also, the semicolon must be defined as the list separator in OS regional settings (see answers above)

like image 23
Andrey Avatar answered Sep 22 '22 12:09

Andrey