У меня есть пользовательский ввод для файла excel, который мне нужно выводить на txt. Это называется csv, однако делимметр не является ";" но "|" поэтому мне нужно создать файл самостоятельно.EXCEL VBA Заменить последнюю строку cr + lf с lf
Я в конечном итоге создал файл, но мне нужно, чтобы каждая строка заканчивалась линией перевода, и она выполняет задание, но в конце созданного файла есть пустая строка с carriege return и line feed.
Как я могу остановить это или удалить последнюю строку с crlf ??
Функции здесь не мой дизайн Я просто отказался от того, что нашел в другом месте.
Теперь я использую это:
Sub CreateAfile()
rok = Format(Date, "yyyy")
Mesic = Format(Date, "mm")
dnes = Format(Date, "dd")
cesta = "\\somepath\"
plnacesta = cesta & "Data_" & rok & Mesic & dnes & "_0001" & ".csv"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim pth As String
pth = ThisWorkbook.Path
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Dim a As Object
If myFileExists(plnacesta) Then
MsgBox "Existuje!"
Exit Sub
Else
End If
Set a = fs.CreateTextFile(plnacesta, True)
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Výsledek")
Dim rng As Range
Set rng = sh.UsedRange
Dim sRange As String
sRange = GetTextFromRangeText(rng)
Call a.WriteLine(sRange)
'Call a.WriteLine(sRange)
a.Close
End Sub
Function myFileExists(ByVal strPath As String) As Boolean
'Function returns true if file exists, false otherwise
If Dir(strPath) > "" Then
myFileExists = True
Else
myFileExists = False
End If
End Function
Function GetTextFromRangeText(ByVal poRange As Range) As String
Dim vRange As Variant
Dim sRet As String
Dim i As Integer
Dim j As Integer
If Not poRange Is Nothing Then
vRange = poRange
For i = LBound(vRange) To UBound(vRange)
For j = LBound(vRange, 2) To UBound(vRange, 2)
sRet = sRet & vRange(i, j)
Next j
sRet = sRet & vbLf
Next i
End If
GetTextFromRangeText = sRet
End Function
Это удалило последнюю пустую строку с cr + lf. Однако последняя строка заканчивается на cr + lf вместо lf. – Savol