Board logo

標題: [發問] 能否依現有的VBA創出另一個VBA呢? [打印本頁]

作者: vpower    時間: 2010-5-30 10:59     標題: 能否依現有的VBA創出另一個VBA呢?

提示: 作者帳號被禁止或禁止訪問
作者: Hsieh    時間: 2010-5-31 09:23

本帖最後由 Hsieh 於 2010-5-31 11:28 編輯

回復 1# vpower


   這個問題癥結在於文字編碼轉換
以樓主提供圖片為例
搜尋關鍵字是"女"
網址列參數"女"被轉成utf-8編碼 %E5%A5%B3
在此請教各位先進
big5的文字該如何轉成utf-8代碼呢?
用google搜到api函數中
MultiByteToWideChar 和 WideCharToMultiByte 是有關轉碼的函數
請懂得使用此2函數的前輩指教
如何將
女→%E5%A5%B3
作者: vpower    時間: 2010-5-31 23:39

提示: 作者帳號被禁止或禁止訪問
作者: Hsieh    時間: 2010-6-1 10:23

本帖最後由 Hsieh 於 2010-6-1 14:54 編輯

回復 6# vpower


網頁架構不同,這種網頁的查詢
是將查詢參數直接寫到網址內
不過網頁的參數採用utf_8編碼
若excel儲存格內輸入big5必需轉成utf_8十六進位碼才能代入
在網路上找到api函數的WideCharToMultiByte函數
但轉出來就是跟網址列的不同
請前輩指導該如何修正程式
  1. Private Const CP_UTF8 = 65001

  2. 'Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
  3. Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

  4. Public Function UTF8_Encode(ByVal Text As String) As String

  5. Dim sBuffer As String
  6. Dim lLength As Long
  7. Dim mystr()

  8. If Text <> "" Then
  9. lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, 0, 0, 0, 0)
  10. sBuffer = Space$(lLength)
  11. lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, StrPtr(sBuffer), Len(sBuffer), 0, 0)
  12. sBuffer = StrConv(sBuffer, vbUnicode)
  13. UTF8_Encode = Hex(Asc(Left$(sBuffer, lLength - 1)))
  14. Else
  15. UTF8_Encode = ""
  16. End If
  17. End Function
複製代碼
[attach]1079[/attach]
作者: Hsieh    時間: 2010-6-3 08:42

回復 4# Hsieh


    山不轉路轉,路不轉我轉
經閔版主提點,utf_8行不通,用utf_5就可直接用中文字
如附件[attach]1105[/attach]
作者: vpower    時間: 2010-6-3 19:33

提示: 作者帳號被禁止或禁止訪問




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)