作者xc9500 (只需要20秒的疯狂勇气!)
看板Office
标题[问题]VBA-Excel汇出到txt前,先移除Unicode方式
时间Tue Jul 17 00:06:50 2018
软体: 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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.120.33
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1531757214.A.9F7.html
※ 编辑: xc9500 (220.132.120.33), 07/17/2018 00:10:34
1F:→ soyoso: google alt+160 取代巨集 07/17 00:16
2F:→ xc9500: 谢谢S大大的回覆,已经找到了! 07/17 19:38