標題:
儲存格內容及特殊符號問題
[打印本頁]
作者:
lionliu
時間:
2015-7-23 10:49
標題:
儲存格內容及特殊符號問題
各位大哥好:
我客戶系統匯出excel檔案遇到2問題請教:
1.在excel上所看到的資料正常,但是若另存成TXT檔開頭和結尾有多出
"
請問我應如何清除它
2.中間的"Ø"因需要我想用AAA取代又該如何,若用手動查找取代沒問題但是若以巨集會將全部的O給取代掉。
上列問題我想用vba處裡是否可行。[attach]21458[/attach]
作者:
Min
時間:
2015-7-25 00:56
"Ø"這個符號ASCII不是216就是248
偏偏VBA的ASCII只能支援0~128
驗證方式如下;
Sub VB_ASCII()
Dim x As Integer
Cells(1, 1) = "Item"
Cells(1, 2) = "Chr"
Cells(1, 3) = "Asc"
For x = 0 To 255
Cells(x + 2, 1) = x
Cells(x + 2, 2) = Chr(x)
Cells(x + 2, 3) = Asc(Chr(x))
Next x
End Sub
作者:
Min
時間:
2015-7-25 00:58
解法二
Replace What:=range("B1"), Replacement:="aa"
B1欄位Hardcode"Ø"
呵呵呵~ 笨方式^^"
作者:
bobomi
時間:
2015-7-25 07:15
以你那個檔案而言
你應該列舉一下
輸出的 txt檔內容, 你想要的是長成何模樣
作者:
lpk187
時間:
2015-7-25 11:07
本帖最後由 lpk187 於 2015-7-25 11:12 編輯
回復
2#
Min
"Ø"這個符號VBA是可以取得的
Sub VB_ASCII()
Dim x As Integer
Cells(1, 1) = "Item"
Cells(1, 2) = "Chr"
Cells(1, 3) = "Asc"
For x = 0 To 255
Cells(x + 2, 1) = x
Cells(x + 2, 2) = ChrB(x)
Cells(x + 2, 3) = AscB(ChrB(x))
Next x
End Sub
複製代碼
VBA不只Chr(n)可以使用,還有ChrB(n)和ChrW(n)
Public Sub test()
Dim n As String
Dim arr(1 To 256, 1 To 512)
n = 0
For i = 1 To 256
For j = 1 To 256
arr(j, i * 2 - 1) = ChrW(n)
arr(j, i * 2) = n
n = n + 1
Next
Next
Range("A1").Resize(256, 512) = arr
End Sub
複製代碼
Chr 函數
請參閱 範例 特性
傳回一個含有與指定的字元碼相關之字元的 String。
語法
Chr(charcode)
charcode 引數是一個用來識別某字元的Long。
請注意
0 到 31 之間的數字與一般、非列印的ASCII碼相同,例如,Chr(10) 會傳回換行字元。charcode 的正常範圍為 0-255。然而,在DBCS系統,charcode 的實際範圍為 -32768 到 65535。
附註 ChrB 函數是使用於含有位元組資料的 String,而非傳回一個字元,其有可能是一或兩個位元組,而 ChrB 都是傳回一個位元組。ChrW 函數則傳回一個包含Unicode 字元的String,若在不支援Unicode的平台上,其功能與Chr函數相同。
備註 Visual Basic for the Macintosh 不支援 Unicode 字串。所以,ChrW(n) 無法傳回 n 個數值 (範圍為 128 到 65,535) 的所有 Unicode 字元,因為它位在 Windows 環境中。相反地,ChrW(n) 會企圖為 n 大於 127 的 Unicode 數值進行「最佳推測」。因此,您不可以在 Macintosh 環境中使用 ChrW。
作者:
bobomi
時間:
2015-7-25 11:19
回復
5#
lpk187
ChrW 編碼應該和 Ascii 不一樣哦
作者:
lpk187
時間:
2015-7-25 11:38
本帖最後由 lpk187 於 2015-7-25 11:43 編輯
回復
6#
bobomi
Sub VB_ASCII()
Dim x As Integer
For x = 0 To 255
Cells(x + 2, 1) = x
Cells(x + 2, 2) = Chr(x)
Cells(x + 2, 3) = ChrB(x)
Cells(x + 2, 4) = ChrW(x)
Cells(x + 2, 5) = AscW(ChrW(x))
Next x
End Sub
複製代碼
除了Chr只能顯示0~127外編碼看不出哪裡不同
ChrW(n) 只是不能在 Macintosh 環境中使用
作者:
bobomi
時間:
2015-7-25 11:52
回復
7#
lpk187
我指的是 ChrW 和 Ascii 編碼
ChrW(224) = à
Ascii (224) = ‡
作者:
GBKEE
時間:
2015-7-25 13:52
回復
1#
lionliu
1.在excel上所看到的資料正常,但是若另存成TXT檔開頭和結尾有多出 "請問我應如何清除它
請參考這裡
2.中間的"Ø"因需要我想用AAA取代又該如何,若用手動查找取代沒問題但是若以巨集會將全部的O給取代掉。
請上傳你巨集的程式碼!
作者:
lpk187
時間:
2015-7-25 13:52
回復
8#
bobomi
不好意思,再次打擾!
我剛查了微軟的ASCII擴充碼https://support.office.com/zh-tw/article/ASCII-%E5%AD%97%E5%85%83%E8%A1%A8-D13F58D3-7BCB-44A7-A4D5-972EE12E50E0?ui=zh-TW&rs=zh-TW&ad=TW#bm5
也是和你PO的圖不一樣! ??
而且查了許多張關於ASCII碼圖片,則是224這個碼卻有好幾種,於是我矇了
作者:
bobomi
時間:
2015-7-25 15:47
回復
10#
lpk187
是我貼錯了
你那個才是微軟的 Ascii
我用 C語言確定過了
作者:
lionliu
時間:
2015-7-25 20:07
本帖最後由 lionliu 於 2015-7-25 20:17 編輯
回復
9#
GBKEE
謝謝各位前輩的指導,剛剛事了CHRW(216)已可以了
第一個問題在研究中謝謝
Range("a:a").Replace What:=ChrW(216), Replacement:="AAA"
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)