[问题]VBA-Excel汇出到txt前,先移除Unicode方式

楼主: xc9500 (只需要20秒的疯狂勇气!)   2018-07-17 00:06:50
软件: Excel
版本: 2016
各位大大好!
请问一下,目前透过vlookup,将nsmoss内容抓到第一个sheet后,再将有资料的字段内容
一个一个的汇出到txt档,
但遇到了汇出后,会有很多的????字符产生。(手动贴到txt,看来会有很多长短不一的
空格存在),在网络上查了一下,主要是说网页断行的值和Excel不同!
所以会产生看不到的空格!
爬了一些文,试了以下方式:
1. 下公式:B2=SUBSTITUTE(TRIM(A2), CHAR(160),"") -> 结果汇出后至txt后,还是一
样有很多?字符
2. 有试过CLEAN+TRIM的组合,由于要输出的内容有空格也有手动断行,它会将一些要空
格 or 断行都移除掉了!
3. 透过Ctrl+H,"寻找目标的字段"为 Alt+160,"取代成的字段,不输任何东西 -> 结果
可行,在输出txt档时,没有?字符了,有将它录制宏,但显示内容如下,
重跑时,它会将所有的文字内容都清除掉。
Cells.Replace What:="?", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
虽然第3点可行,但需要停下来手动处理,所以想请问一下,有什么宏方式/公式,
可以在Excel内容要汇出txt前,就将Unicode移除?
另外,以下的code,是透过网络上查找来做修改的,顺便问一下,
可以再透过Print #1 Replace的部份,在Excel在汇出txt的时候,直接删除掉?字符吗?
该如何写呢?
请帮忙解答一下,谢谢.
Sub Output()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim a As Object
Sheet1.Activate
i = Range("A65536").End(xlUp).Row
j = Selection.SpecialCells(xlCellTypeLastCell).Column
For X = 2 To i
For y = 2 To j
If Cells(X, y) = "" Then
Cells(X, y) = 0
End If
Set fs = CreateObject("Scripting.FileSystemObject")
Open "C:\1\" & Cells(X, "A") & "\" & Cells(1, y) & ".txt" For Output As #1
Print #1, Replace(Cells(X, y), Chr(10), vbCrLf), Chr(10), vbCrLf '保持内容
的空格及断行
Close #1
Next
Next
Close #1
End Sub
作者: soyoso (我是耀宗)   2018-07-17 00:16:00
google alt+160 取代宏
楼主: xc9500 (只需要20秒的疯狂勇气!)   2018-07-17 19:38:00
谢谢S大大的回复,已经找到了!

Links booklink

Contact Us: admin [ a t ] ucptt.com