Outlook宏向CSV追加内容未换行问题求助
解决Outlook宏追加CSV内容到同一行的问题
问题根源是手动编辑CSV后,文件末尾没有留下换行符,导致宏的Print语句直接接在最后一行内容后面输出。下面是两种可靠的解决方法:
方法一:自动检查并补全文件末尾的换行
通过二进制模式读取文件最后一个字符,判断是否为换行符,若不是则先补换行,再追加内容:
strFile_Path = "C:\Users\XX\Desktop\test.csv" Open strFile_Path For Binary As #1 Dim lastChar As String ' 仅当文件不为空时检查最后一个字符 If LOF(1) > 0 Then Get #1, LOF(1), lastChar ' 兼容Windows(vbCrLf)和Unix(vbLf)换行格式 If lastChar <> vbLf And lastChar <> vbCr Then Open strFile_Path For Append As #2 ' 输出空行自动添加换行符 Print #2, Close #2 End If End If Close #1 ' 正常追加内容 Open strFile_Path For Append As #1 Print #1, sbjt & ";0" Close #1
方法二:根据文件状态前置换行
先判断文件是否为空,若非空则先输出换行,再写入内容:
strFile_Path = "C:\Users\XX\Desktop\test.csv" Dim fileContent As String ' 读取文件内容判断是否为空 Open strFile_Path For Input As #1 If LOF(1) > 0 Then fileContent = Input(LOF(1), 1) End If Close #1 Open strFile_Path For Append As #1 ' 文件非空时先加换行 If fileContent <> "" Then Print #1, End If Print #1, sbjt & ";0" Close #1
注意:Write语句会自动给字符串添加双引号,这是它的标准CSV格式化行为,如果你不需要双引号,继续用Print即可。
内容的提问来源于stack exchange,提问作者st_user_321122
相关产品推荐
相关产品推荐

