You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA如何发送Enter字符(Chr(10))而不产生换行?

解决VBA写入TXT文件时仅添加Chr(10)换行而不产生空行的问题

我帮你搞定这个问题!你遇到的核心问题是FileSystemObject的writeline方法默认会在内容末尾添加vbCrLf(也就是回车+换行的组合:Chr(13)+Chr(10)),但你的服务器只识别单纯的Chr(10)换行,而且这个默认的额外换行还导致了空行,让服务器无法识别后续内容。

要精准控制换行符,你只需要把writeline换成write方法,然后手动在每一行内容末尾拼接Chr(10)就行——这样既不会自动添加多余的换行,又能给服务器它需要的换行标识。

修改后的完整代码如下:

Private Sub E16_Click()
 Dim fs As Object
 Set fs = CreateObject("Scripting.FileSystemObject")
 Dim f As Object
 Dim order As Variant
 order = Sheets("EDI").Range("I2") ' 修正原代码里变量名不一致的问题(pedido改为order)
 
 ' 打开指定路径的文本文件,2表示覆盖写入,True表示不存在则创建
 Set f = fs.OpenTextFile("c:\" & IIf(Range("AA24") = 2, "temp\", "") & "pc" & order & ".txt", 2, True)
 
 ' 使用write方法写入内容,手动添加Chr(10)作为换行符
 f.write "ITP" & Sheets("EDI").Range("C2") & Sheets("EDI").Range("J2") & Sheets("EDI").Range("L2") & WorksheetFunction.Rept(" ", 75) & Chr(10)
 f.write Sheets("EDI").Range("M2") & Chr(10)
 f.write "AE3" & Sheets("EDI").Range("J2") & "04771370000183" & Sheets("EDI").Range("J2") & WorksheetFunction.Rept(" ", 83) & Chr(10)
 
 ' 务必关闭文件并释放对象,避免文件锁定或内存占用
 f.Close
 Set f = Nothing
 Set fs = Nothing
End Sub

几个关键点:

  • write方法只会严格写入你指定的内容,不会自动附加任何换行符,完全由你控制每行末尾的字符。
  • 手动拼接Chr(10)就是服务器要求的换行标识,不会产生多余的空行。
  • 补充了文件关闭和对象释放的代码,这是VBA编程的好习惯,能避免文件被意外锁定或者内存泄漏。

如果你的最后一行不需要换行符,直接去掉最后一个Chr(10)就可以了,根据实际需求调整就行。

内容的提问来源于stack exchange,提问作者Sirius_Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:52:01