作者: C_Law 時間: 2023-10-29 18:17 標題: (己解決)Excel VBA:UTF8 bytes array 轉做文字
本帖最後由 C_Law 於 2023-10-30 17:30 編輯
我有個 byte 的 array,係 UTF8 的中文字,eg.
b(i) = e5 b7 b4 e9 bb 8e = 巴黎
請問怎樣將這堆 byte 轉返做文字放入一個 Cell?
我只識個笨方法,寫入個 Temp file 再 Read 返出來,就好似:
- Dim sTemp As String
- sTemp = ""
- Open "D:\Video\TvEditor\myTemp.txt" For Binary As #2
- For j = 1 To i - 2
- Put #2, , bytes(j)
- Next j
- Close #2
-
- Set objStream = CreateObject("ADODB.Stream")
- objStream.Charset = "utf-8"
- objStream.Open
- objStream.LoadFromFile ("D:\Video\TvEditor\myTemp.txt")
- sTemp = objStream.ReadText()
作者: s20012797 時間: 2023-10-29 19:01
本帖最後由 s20012797 於 2023-10-29 19:03 編輯
VBA吾熟,新Office的python吾知做成點.
Excel JavaScript API 有一個:
- Excel.run(function(context) {
- var bytes = [0xe5, 0xb7, 0xb4, 0xe9, 0xbb, 0x8e];
- var text = "";
- for (var i = 0; i < bytes.length; i++) {
- text += String.fromCharCode(bytes[i]);
- }
- var sheet = context.workbook.worksheets.getActiveWorksheet();
- var range = sheet.getRange("A1");
- range.values = [[text]];
- return context.sync();
- }).catch(function(error) {
- console.log(error);
- });
點用Excel JavaScript API就有努自己做下功課了.
PS:都吾知M$D友仔諗D咩,新Office用python替代VBA都吾真接比JavaScript API座正,兩都在效能上差天共地...


作者: C_Law 時間: 2023-10-30 17:30
本帖最後由 C_Law 於 2023-10-30 17:31 編輯
VBA吾熟,新Office的python吾知做成點.
Excel JavaScript API 有一個:程式碼使用Excel JavaScript API將位元 ...
s20012797 發表於 2023/10/29 19:01
Thanks~~~研究下先。
我另外搵到個方法:
Utf8BytesToString()
https://www.di-mgt.com.au/howto-convert-vba-unicode-to-utf8.html
不過要改小小:
Public Function Utf8BytesToString(abUtf8Array() As Byte) As String
nBytes = BytesLength(abUtf8Array)
改為
Public Function Utf8BytesToString(abUtf8Array() As Byte, NoOfBytes As Long) As String
nBytes = NoOfBytes
使用:
dim sTemp as String
dim bytes(1000) as Byte
bytes(0) = &HE5
bytes(1) = &HB7
bytes(2) = &HB4
bytes(3) = &HE9
bytes(4) = &HBB
bytes(5) = &H8E
sTemp = Utf8BytesToString(bytes(), 6)
結果:
sTemp = 巴黎
作者: bongbong3481 時間: 2023-10-30 18:44
本帖最後由 bongbong3481 於 2023-10-30 19:04 編輯
Delete.
作者: bongbong3481 時間: 2023-10-30 19:04
回覆 1# C_Law
好奇問下,點解要轉做UTF8 ? VBA 處理中文字的問題?
(見到你個post ,我有少少啟發,我個繁體excel vba 的ide 處理吾到簡體字檔案名, 如果將中文字轉做unicode 再處理,有可能解決到)
作者: bongbong3481 時間: 2023-10-30 19:06
回覆 2# s20012797
大陸wps 支持javascript , 不過我沒用過
作者: C_Law 時間: 2023-10-30 19:16
我不是要轉做 UTF8。
而係掉轉想由一堆 UTF8 的 Byte 轉返做 Excel 睇得到的文字。來源係個 Binary file, 當中有些 UTF8 的文字。
via HKEPC IR 5.1.14 - Android(5.1.2F)
作者: s20012797 時間: 2023-10-30 19:18
LibreOffice同FreeOffice已可以通吃Java,JavaScript,VBA,Basic同python,論相容性有排未輪到wps
作者: bongbong3481 時間: 2023-10-30 20:19
原來調轉左
作者: bongbong3481 時間: 2023-10-30 20:22
LibreOffice同FreeOffice已可以通吃Java,JavaScript,VBA,Basic同python,論相容性有排未輪到wps ...
s20012797 發表於 2023-10-30 19:18
咁西厲


