【发布时间】:2019-11-04 04:24:24
【问题描述】:
我的 excel 文件有 3 张工作表,一张包含大量静态数据(我们称之为 Build Status),一张接受数据输入(我们称之为 Input),一张从 Build Status 返回数据使用基于输入工作表中的值的 IF 和 VLOOKUP 函数的工作表(我们将此工作表称为输出)。我的输出表有静态标题,我的宏从输出表创建一个 csv(宏绑定到一个按钮)。由于某种原因,我的 .txt 文件(csv 保存为 .txt)的末尾有一个回车,我必须删除它才能让另一个程序的 HMI 接受上传格式。任何有关摆脱退货或创建退货原因的帮助将不胜感激。
无论输出为 .csv 还是 .txt(csv 格式),在文本编辑器中查看时都有回车。
Option Explicit
Sub CreateCSV()
Dim wbI As Workbook, wbO As Workbook
Dim wsI As Worksheet, wsO As Worksheet
Dim jLastRow As Long
Dim LDate As String
'~~> Set a format for current date
LDate = Format(Date, "mm-dd-yyyy")
'~~> Source/Input Workbook
Set wbI = ThisWorkbook
'~~> Set the relevant sheet from where you want to copy
Set wsI = wbI.Sheets("OUTPUT")
'~~> Sets an integer value for the last row of data being copied
jLastRow = wsI.Cells.Find(What:="*", LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'~~> Destination/Output Workbook
Set wbO = Workbooks.Add
With wbO
'~~> Set the relevant sheet to paste to
Set wsO = wbO.Sheets("Sheet1")
'~~> Copy the range
wsI.Range("A1:Z" & jLastRow).Copy
'~~> Paste it in Cell A1.
wsO.Range("A1").PasteSpecial Paste:=xlPasteValues
'~~>. Save the file
.SaveAs Filename:="\\TestFolder\TestRecipe" & LDate & ".txt", FileFormat:=xlCSV
'~~> Clear Clipboard
Application.CutCopyMode = False
End With
End Sub
预期:在名为 TestRecipe(Date) 的 .txt 文件中创建逗号分隔值,该文件适用于第三方软件。
实际:文件创建、名称和格式有效,但文件末尾有回车符,防止文件上传到第三方软件。一旦我手动删除它,它就可以正常上传。
【问题讨论】:
-
您可以尝试converting the range to a CSV string,而不是使用
.SaveAs FileFormat:=xlCSV,然后删除最后一个回车符,然后将结果字符串写入文本文件。 -
我没有尝试这样做是因为找到了手头的真正问题,但它可能对其他人有用。谢谢!