View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
joel joel is offline
external usenet poster
 
Posts: 9,101
Default Excel workbook SaveAs question

I have given people the macro before because of ALLLLLL the unusual thing
excel does when writing CVS. It is just better to do it yourself.

Sub WriteCSV()

Const MyPath = "C:\temp\"
Const WriteFileName = "text.csv"

Const Delimiter = ","

Const ForReading = 1, ForWriting = 2, ForAppending = 3

Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Set fswrite = CreateObject("Scripting.FileSystemObject")


'open files
WritePathName = MyPath + WriteFileName
fswrite.CreateTextFile WritePathName
Set fwrite = fswrite.GetFile(WritePathName)
Set tswrite = fwrite.OpenAsTextStream(ForWriting, TristateUseDefault)

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For RowCount = 1 To LastRow
LastCol = Cells(RowCount, Columns.Count).End(xlToLeft).Column
For ColCount = 1 To LastCol
If ColCount = 1 Then
OutputLine = Cells(RowCount, ColCount)
Else
OutputLine = OutputLine & Delimiter & Cells(RowCount, ColCount)
End If
Next ColCount
tswrite.writeline OutputLine
Next RowCount

tswrite.Close

End Sub



"Dave Farquharson" wrote:

I am using _Workbook::SaveAs to make a csv copy of an XLS file (using the
file format Excel::xlCSVWindows). The problem I've run into is, numeric
cells in the Excel file that are formatted to use thousands separators copy
that formatting to the CSV file (one of the few bits of formatting that DO
get copied).

So a number without thousands separators is 1000 in both the XLS and CSV
files.

A number with thousands separators is 1,000 in the XLS file, and "1,000" in
the CSV file.

This isn't so tragic, except for a few things: if you have a text field with
1,000 in it, it looks exactly the same in the CSV file as a numeric field
with thousands separators ("1,000"), making it impossible to distinguish
between them. Because of this, modifying our CSV parser to handle something
like "1,000" is somewhat less than ideal.

So my question is, is there a way to tell Excel NOT to format over the
thousands separator on SaveAs? I suspect there is not, but thought I'd ask
anyway.

Thanks,

Dave