Good day everyone,
I have this macro, which exports all cells with formulas, BUT with blank outputs.
I only want the cells displaying as non blank to export. Any ideas?
Sub Export_A()
Dim sPath As String
Dim SFile As String
Dim nLog As Integer
sPath = "C:\AAAWork\"
SFile = sPath & ActiveSheet.Range("P9") & ".txt"
nfile = FreeFile
Open SFile For Output As #nfile
For i = 1 To ActiveSheet.UsedRange.Rows.Count
Set ThisCell = ActiveSheet.Range("A" & i)
If ThisCell.Text <> "" Then
' sInDate = ThisCell.Text
'sOutDate = Format(ThisCell.Value, "mm/yyyy")
sOutDate = Format(ThisCell.Value, "yyyy-mm")
'stemp = """" & sOutDate & """" this gives the date the " in the
beginning and end
stemp = "" & sOutDate & ""
For j = 1 To 10
If j = 1 Or j = 2 Or j = 9 Then
stemp = stemp & ";" & ThisCell.Offset(0, j)
Else
'stemp = stemp & "," & """" & ThisCell.Offset(0, j) & """" This
gives every value a " beginning and end
stemp = stemp & ";" & ThisCell.Offset(0, j)
End If
Next
End If
Print #nfile, stemp
Next
Close #nfile
MsgBox ("Completed a file called " & SFile & " has been generated")
End Sub
This is an interesting way of exporting to CSV, but it was inherited and does everything else very well.
Try placing the Write line at the end of the For loop
Sub Export_A()
Dim sPath As String
Dim SFile As String
Dim nLog As Integer
sPath = "C:\AAAWork\"
SFile = sPath & ActiveSheet.Range("P9") & ".txt"
nfile = FreeFile
Open SFile For Output As #nfile
For i = 1 To ActiveSheet.UsedRange.Rows.Count
Set ThisCell = ActiveSheet.Range("A" & i)
If ThisCell.Text <> "" Then
' sInDate = ThisCell.Text
'sOutDate = Format(ThisCell.Value, "mm/yyyy")
sOutDate = Format(ThisCell.Value, "yyyy-mm")
'stemp = """" & sOutDate & """" this gives the date the " in the beginning and end
stemp = "" & sOutDate & ""
For j = 1 To 10
stemp = stemp & ";" & ThisCell.Offset(0, j)
Next
Print #nfile, stemp
End If
Next
Close #nfile
MsgBox ("Completed a file called " & SFile & " has been generated")
End Sub
first you don't need this if statement as the output is the same if it's true or false
If j = 1 Or j = 2 Or j = 9 Then
stemp = stemp & ";" & ThisCell.Offset(0, j)
Else
'stemp = stemp & "," & """" & ThisCell.Offset(0, j) & """" This gives every value a " beginning and end
stemp = stemp & ";" & ThisCell.Offset(0, j)
End If
If the blanks are in the following columns you could change to code to:
If ThisCell.Offset(0, j) <> "" Then
stemp = stemp & ";" & ThisCell.Offset(0, j)
End If
Which will skip blank columns
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.