majkkollersk
New Member
- Joined
- Oct 26, 2017
- Messages
- 1
Hi everyone,
This is my first post so please do not remove my profile in case I did not follow all the posting rules.
I am using a VBA script that saves an excel selection as .csv file, my issue is that my code (at the end of this question) returns a .csv file which looks as follows:
but I need it to look like this:
Anyone any ideas? Your help is greatly appreciated !
Public Sub ExcelRowsToCSV()
Dim iPtr As Integer
Dim sFileName As String
Dim intFH As Integer
Dim aRange As Range
Dim iLastColumn As Integer
Dim oCell As Range
Dim iRec As Long
Set aRange = Application.InputBox("Select a range:-", , Selection.Address, , , , , Type:=8)
iLastColumn = aRange.Column + aRange.Columns.Count - 1
iPtr = InStrRev(ActiveWorkbook.<wbr>FullName, ".")
sFileName = Left(ActiveSheet.Name, iPtr - 1) & ".csv"
sFileName = Application.GetSaveAsFilename(<wbr>InitialFileName:=sFileName, FileFilter:="CSV (Semicolon delimited) (*.csv), *.csv")
If sFileName = "False" Then Exit Sub
Close
intFH = FreeFile()
Open sFileName For Output As intFH
iRec = 0
For Each oCell In aRange
If oCell.Column = iLastColumn Then
Print #intFH , oCell.Value
iRec = iRec + 1
Else
Print #intFH , oCell.Value, ";";
End If
Next oCell
Close intFH
MsgBox "Finished: " & CStr(iRec) & "records written to" _
& sFileName & Space(10), vbOKOnly + vbInformation
End Sub
[FONT=verdana, sans-serif]
[/FONT]
This is my first post so please do not remove my profile in case I did not follow all the posting rules.
I am using a VBA script that saves an excel selection as .csv file, my issue is that my code (at the end of this question) returns a .csv file which looks as follows:
but I need it to look like this:
Anyone any ideas? Your help is greatly appreciated !
Public Sub ExcelRowsToCSV()
Dim iPtr As Integer
Dim sFileName As String
Dim intFH As Integer
Dim aRange As Range
Dim iLastColumn As Integer
Dim oCell As Range
Dim iRec As Long
Set aRange = Application.InputBox("Select a range:-", , Selection.Address, , , , , Type:=8)
iLastColumn = aRange.Column + aRange.Columns.Count - 1
iPtr = InStrRev(ActiveWorkbook.<wbr>FullName, ".")
sFileName = Left(ActiveSheet.Name, iPtr - 1) & ".csv"
sFileName = Application.GetSaveAsFilename(<wbr>InitialFileName:=sFileName, FileFilter:="CSV (Semicolon delimited) (*.csv), *.csv")
If sFileName = "False" Then Exit Sub
Close
intFH = FreeFile()
Open sFileName For Output As intFH
iRec = 0
For Each oCell In aRange
If oCell.Column = iLastColumn Then
Print #intFH , oCell.Value
iRec = iRec + 1
Else
Print #intFH , oCell.Value, ";";
End If
Next oCell
Close intFH
MsgBox "Finished: " & CStr(iRec) & "records written to" _
& sFileName & Space(10), vbOKOnly + vbInformation
End Sub
[FONT=verdana, sans-serif]
[/FONT]