[問題]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